SOFTWARE ENGINEERING LABORATORY SERIES
SEL-81-305
Recommended Approach to
Software Development
Revision 3
JUNE 1992
IVI/VSA
National Aeronautics and
Space Administration
Goddard Space Flight Center
Greenbelt, Maryland 20771
C=:
■ I I
J II
1 "III
•IF I nil
■I "
FOREWORD
The Software Engineering Laboratory (SEL) is an organization sponsored by the
National Aeronautics and Space Administration/Goddard Space Flight Center
(NASA/GSFC) and created to investigate the effectiveness of software engineering
technologies when applied to the development of applications software. The SEL was
created in 1976 and has three primary organizational members:
NASA/GSFC, Software Engineering Branch
University of Maryland, Department of Computer Science
Computer Sciences Corporation, Software Engineering Operation
The goals of the SEL are (1) to understand the software development process in the GSFC
environment; (2) to measure the effects of various methodologies, tools, and models on
this process; and (3) to identify and then to apply successful development practices. The
activities, findings, and recommendations of the SEL are recorded in the Software
Engineering Laboratory Series, a continuing series of reports that includes this document.
The previous version of the Recommended Approach to Software Development was
published in April 1983. This new edition contains updated material and constitutes a
major revision to the 1983 version. The following are primary contributors to the current
edition:
Linda Landis, Computer Sciences Corporation
Sharon Waligora, Computer Sciences Corporation
Frank McGarry, Goddard Space Flight Center
Rose Pajerski, Goddard Space Flight Center
Mike Stark, Goddard Space Flight Center
Kevin Orlin Johnson, Computer Sciences Corporation
Donna Cover, Computer Sciences Corporation
Single copies of this document can be obtained by writing to
Software Engineering Branch
Code 552
Goddard Space Flight Center
Greenbelt, Maryland 20771
iu
PRECEDING PAGE K'-AHX NOT FILMED
ACKNOWLEDGMENTS
In preparation for the publication of this document and the Manager's Handbook for
Software Development, teams of technical managers from NASA/GSFC and Computer
Sciences Corporation (CSC) met weekly for many months to resolve issues related to flight
dynamics software development. It was through their efforts, experience, and ideas that
this edition was made possible.
NASA/GSFC Team Members CSC Team Members
Sally Godfrey Linda Esker
Scott Green Jean Liu
Charlie Newman Bailey Spence
Rose Pajerski Sharon Waligora
Mike Stark Linda Landis
Jon Valett
IV
ABSTRACT
This document presents guidelines for an organized, disciplined approach to software
development that is based on studies conducted by the Software Engineering Laboratory
(SEL) since 1976. It describes methods and practices for each phase of a software
development life cycle that starts with requirements definition and ends with acceptance
testing. For each defined life cycle phase, this document presents guidelines for the
development process and its management, and for the products produced and their reviews.
This document is a major revision of SEL-8 1-205.
NOTE: The material presented in this document is consistent with major NAS A/GSFC standards.
NOTE: The names of some commercially available products cited in this document may be copyrighted or
registered as trademarks. No citation in excess of fair use, express or implied, is made in this document
and none should be construed.
VI
CONTENTS
Section 1 — Introduction 1
Section 2 — The Software Development Life Cycle 5
Section 3 — The Requirements Definition Phase 21
Section 4 — The Requirements Analysis Phase 41
Section 5 — The Preliminary Design Phase 63
Section 6 — The Detailed Design Phase 85
Section 7 — The Implementation Phase 107
Section 8 — The System Testing Phase 135
Section 9 — The Acceptance Testing Phase , 161
Section 10 — Keys to Success 179
Acronyms 185
References ,...., 1 87
Standard Bibliography of SEL Literature 1 89
Index '. 201
vu
LIST OF FIGURES
Figure Page
1 - 1 The SEL Software Engineering Environment 1
2- 1 Activities by Percentage of Total Development Staff Effort 6
2-2 Reuse Activities Within the Life Cycle 1 6
2-3 Graph Showing in Which Life-Cycle Phases Each Measure
Is Collected 19
3-1 Generating the System and Operations Concept 23
3-2 Developing Requirements and Specifications 24
3-3 SOC Document Contents 33
34 Requirements and Specifications Document Contents 34
3-5 SCR Format 35
3-6 SCR Hardcopy Material Contents 36
3-7 SRR Format 37
3-8 SRR Hardcopy Material Contents 38
4-1 Analyzing Requirements 43
4-2 Timeline of Key Activities in the Requirements Analysis Phase 46
4-3 Effort Data Example - ERBS AGSS 53
4-4 Requirements Analysis Report Contents 55
4-5 SDMP Contents (2 parts) 56
4-6 SSR Format 59
4-7 SSR Hardcopy Material 60
5-1 Developing the Preliminary Design 65
5-2 Preliminary Design Phase Timeline 67
5-3 Extent of the Design Produced for FORTRAN Systems
During the Preliminary and Detailed Design Phases 72
5-4 Level of Detail Produced for Ada Systems During
Preliminary Design 73
5-5 Preliminary Design Report Contents 81
5-6 PDR Format 82
5-7 PDR Hardcopy Material 83
6-1 Generating the Detailed Design 87
6-2 Timeline of Key Activities in the Detailed Design Phase 88
6-3 Checklist for a Unit Design Inspection 94
64 Example of the Impact of Requirements Changes
on Size Estimates - the UARS Attitude Ground
Support System 98
6-5 Detailed Design Document Contents 100
6-6 CDR Format 103
6-7 CDR Hardcopy Material 104
7-1 Implementing a Software Build 109
7-2 Phases of the Life Cycle Are Repeated for
Multiple Builds and Releases 110
V1I1
LIST OF FIGURES (cont.)
Figure Pa8e
7-3 Timeline of Key Activities in the Implementation Phase 112
14 Sample Checklist for Code Inspection 1 1 8
7-5 Integration Testing Techniques 121
7-6 Development Profile Example 126
7-7 Example of CPU Usage -ERBSAGSS 128
7-8 Generalized Test Plan Format and Contents 131
7-9 BDR Format I33
7-10 BDR Materials 134
8-1 System Testing 136
8-2 Timeline of Key Activities in the System Testing Phase 138
8-3 Sample Software Failure Report Form 148
8^4 EUVEDSIM System Test Profile 152
8-5 SEL Discrepancy Status Model 152
8-6 User's Guide Contents 154
8-7 System Description Contents 156
8-8 ATRR Format 158
8-8 ATRR Materials 158
9-1 Acceptance Testing 163
9-2 Timeline of Key Activities in the Acceptance Testing Phase 1 64
9-3 Sample Error-Rate Profile, UARS AGSS 175
9-4 Software Development History Contents 178
LIST OF TABLES
Table Pa8e
2-1 Measures Recommended by the SEL 1 8
3-1 Objective Measures Collected During the Requirements Definition Phase 3 1
4- 1 Objective Measures Collected During the Requirements Analysis Phase 5 1
5-1 Objective Measures Collected During the Preliminary Design Phase 78
6- 1 Objective Measures Collected During the Detailed Design Phase 97
7-1 Objective Measures Collected During the Implementation Phase 125
8-1 Objective Measures Collected During the System Testing Phase 151
9-1 Objective Measures Collected During the Acceptance Testing Phase 174
IX
im mi ml
-ill mill
.III I
JIN
Jill 1
/lilfl I
.in
.jm III
n mil
mini
Jill If Ml
ill 1 1 II
■ III!
* I II
■ r
Section 1 - Introduction
SECTION 1
INTRODUCTION
This document presents a set of guidelines that constitute a disciplined approach to software
development. It is intended primarily for managers of software development efforts and
for the technical personnel (software engineers, analysts, and programmers) who are
responsible for implementing the recommended procedures. This document is neither a
manual on applying the technologies described here nor a tutorial on monitoring a govern-
ment contract. Instead, it describes the methodologies and tools that the Software
Engineering Laboratory (SEL) recommends for use in each life cycle phase to produce
manageable, reliable, cost-effective software.
THE FLIGHT DYNAMICS ENVIRONMENT
The guidelines included here are those that have proved effective in the experiences of the
SEL (Reference 1). The SEL monitors and studies software developed in support of flight
dynamics applications at the National Aeronautics and Space Administration/Goddard
Space Flight Center (NASA/GSFC). Since its formation in 1976, the SEL has collected
data from more than 100 software development projects. Typical projects range in size
from approximately 35,000 to 300,000 delivered source lines of code (SLOC) and require
from 3 to 60 staff-years to produce.
Flight dynamics software is developed in two distinct computing environments: the Flight
Dynamics Facility (FDF) and the Systems Technology Laboratory (STL). (See Figure
1-1.) Mission support software is engineered and operated in the mainframe environment
of the FDF. This software is used in orbit determination, orbit adjustment, attitude deter-
mination, maneuver planning, and general mission analysis. Advanced concepts for flight
dynamics are developed and studied in the STL. Software systems produced in this facility
include simulators, systems requiring special architectures (e.g., embedded systems), flight
FLIGHT DYNAMICS
MISSION SUPPORT
REQUIREMENTS
SYSTEMS DEVELOPMENT
FLIGHT DYNAMICS
FACILITY
SYSTEMS TECHNOLOGY
LABORATORY
> MISSION SUPPORT
SOFTWARE
• DEVELOPMENT AND
MAINTENANCE OF
OPERATIONAL SYSTEMS
■ MISSION ANALYSIS AND
OPERATIONS
FUTURE
NEEDS
• STABLE/UNCHANGING
HARDWARE
PROVEN
TECHNOLOGY
• ADVANCED SYSTEMS
• RESEARCH AND
DEVELOPMENT
• NEW TOOLS, METHODS.
LANGUAGES
■ EXTENSIVE TOOLSETS
FOR DEVELOPMENT
• SEL DATABASE
ADVANCED
TECHNOLOGY
Figure 1-1. The SEL Software Engineering Environment
PRECEDES PAGE BLANK NOT FILMED
Section 1 - Introduction
dynamics utilities, and projects supporting advanced system studies.
The STL also hosts the SEL database and the entire set of SEL
research tools.
This revised edition of the Recommended Approach to Software
Development reflects the evolution in life cycle, development
methodology, and tools that has taken place in these environments in
recent years. During this time, Ada and object-oriented design
(OOD) methodologies have been introduced and used successfully.
The potential for reuse of requirements, architectures, software, and
documentation has been, and continues to be, studied and exploited.
Ongoing studies also include experiments with the Cleanroom
methodology (References 2 through 4), formal inspection, and
computer-aided software engineering (CASE) tools.
Because the SEL's focus is process improvement, it is a catalyst for
this evolution. The SEL continuously conducts experiments using
the actual, production environment. The lessons learned from these
experiments are routinely fed back into an evolving set of standards
and practices that includes the Recommended Approach.
As these studies are confined to flight dynamics applications,
readers of this document are cautioned that the guidance presented
here may not always be appropriate for environments with
significantly different characteristics.
DOCUMENT OVERVIEW
This document comprises 10 sections. Sections 3 through 9 parallel
the phases of the software development life cycle through acceptance
testing, and discuss the key activities, products, reviews,
methodologies, tools, and metrics of each phase.
Section 1 presents the purpose, organization, and intended
audience for the document.
Section 2 provides an overview of the software development
life cycle. The general goals of any software development effort
are discussed, as is the necessity of tailoring the life cycle to adjust
to projects of varying size and complexity.
Section 3 provides guidelines for the requirements definition
phase. Generation of the system and operations concept and the
requirements and specifications documents are covered. The
purpose and format of the system concept and requirements reviews
are oudined.
Section 1 - Introduction
r
(
REFERENCE
Section 4 discusses the key activities and products of the
requirements analysis phase: requirements classifications,
walk-throughs, functional or object-oriented analysis, the
requirements analysis report, and the software specifications review.
Section 5 presents the recommended approach to preliminary
design. The activities, products, and methodologies covered
include structured and object-oriented design, reuse analysis, design
walk-throughs, generation of prolog and program design language,
the preliminary design report, and the preliminary design review.
Section 6 provides comparable material for the detailed design
phase. Additional topics include the build test plan, completion of
prototyping activities, the critical design review, and the detailed
design document.
Section 7 contains guidelines for implementation of the
designed software system. Coding, code reading, unit testing, and
integration are among the activities discussed. The system test plan
and user's guide are summarized.
Section 8 addresses system testing, including test plans, testing
methodologies, and regression testing. Also covered are preparation
of the system description document and finalization of the
acceptance test plan.
Section 9 discusses the products and activities of the acceptance
testing phase: preparing tests, executing tests, evaluating results,
and resolving discrepancies.
Section 10 itemizes key DOs and DON'Ts for project success.
A list of acronyms, references, a
bibliography of SEL literature, and an
index conclude this document.
\
IB
Recent SEL papers on software
maintenance include
"Measurement Based
Improvement of Maintenance in
the SEL." and "Towards Full
Life Cycle Control, " both by
Rombach, Ulery, and Valett.
See References 5 and 6.
Although the maintenance and
operation phase is beyond the scope of
the current document, efforts are now
underway in the SEL to study this important
part of the life cycle. The results of these
studies will be incorporated into a future
edition.
i
o
a
3
a
c
o
3
Mllll II MM III M AIM Ullll III
.Jllll
M\
A\t\ mil , , jMiliil
Jllll nil
II III III
Jill II
■III!
Section 2 - Life Cycle
SECTION 2
THE SOFTWARE DEVELOPMEISTT LIFE CYCLE
The flight dynamics software development process is modeled as a series of
eight sequential phases, collectively referred to as the software development
life cycle:
I 1. Requirements Definition | — ^
2jRequirementsAnalysjs^^I
SjPrefirninaryDesign
4. Detailed Design
5. Implementation
6. System Testing
7. Acceptance Testing
1-
8. Maintenance & Operational
Each phase of the software development life cycle is characterized by
specific activities and the products produced by those activities.
As shown in Figure 2-1, these eight phases divide the software life cycle
into consecutive time periods that do not overlap. However, the activities
characteristic of one phase may be performed in other phases. Figure 2-1
graphs the spread of activities throughout the development life cycle of
typical flight dynamics systems. The figure shows, for example, that
although most of the work in analyzing requirements occurs during the
requirements analysis phase, some of that activity continues at lower levels
in later phases as requirements evolve.
PRECEDING PAGE BLAriK NOT FJLMED
Section 2 - Life Cycle
REQUIREMENTS
DEFW4TTION
PHASE
■ A ■ DETAILED ■
■ f* DESIGN ■
■ I ■ PHASE ■
PRELIMINARY
DESIGN PHASE
IMPLEMENTATION PHASE
SYSTEM B ACCEPTANCE ■ MAINTENANCE AND
TEST B TEST PHASE ■ OPERATION PHASE
PHASE ■ ■
REQUIREMENTS
ANALYSIS PHASE
CALENDAR TIME
Example At the end of the Implementation phase (5th dashed line), approximately 46% of the staff are Involved In system testing;
approximately 16% are preparing for acceptance testing; approximately 7% are addressl ng requirements changes or problems;
approximately 12% are designing modifications; and approximately 20% are coding, code reading, unit testing, and Integrating
changes. Data are shown only for the phases of the software life cycle for which the SEL has a representative sample.
Figure 2-1. Activities by Percentage of Total Development Staff Effort
PHASES OF THE LIFE CYCLE
The eight phases of the software development life cycle are defined in the following
paragraphs.
Requirements Definition
Requirements definition is the process by which the needs of the customer are translated
into a clear, detailed specification of what the system must do. For flight dynamics
applications, the requirements definition phase begins as soon as the mission task is
established. A team of analysts studies the available information about the mission and
develops an operations concept. This includes a timeline for mission events, required
attitude maneuvers, the types of computational processes involved, and specific operational
scenarios. The functions that the system must perform are defined down to the level of a
subsystem (e.g., a telemetry processor).
1
Section 2 - Life Cycle
r
(
NOTE
\
In this document, the term analyst refers
to those specialists in flight dynamics
(astronomers, mathematicians, physicists,
and engineers) who determine the detailed
requirements of the system and perform
acceptance tests. For these activities,
analysts work in teams (e.g., the
requirements definition team) and function
as agents for the end users of the system.
NOTE
"\
In each phase of the life
cycle, certain milestones
must be reached in order to
declare the phase complete.
Because the life cycle is
sequential, these exit criteria are also the
entry criteria for the following phase. In
this document, entry and exit criteria are
shown in the summary tables on the first
page of Sections 3 through 9. A brief
discussion of the phase's exit criteria is
provided at the conclusion of each section.
Working with experienced developers, analysts
identify any previously developed software that can
be reused on the current project. The advantages
and disadvantages of incorporating the existing
components are weighed, and an overall
architectural concept is negotiated. The results of
these analyses are recorded in the system and
operations concept (SOC) document and assessed in
the system concept review (SCR).
Guided by the SOC, a requirements definition team
derives a set of system-level requirements from
documents provided by the mission project office.
A draft version of the requirements is then recast in
terms suitable for software design. These
specifications define what data will flow into the
system, what data will flow out, and what steps
must be taken to transform input to output.
Supporting mathematical information is included,
and the completed requirements and specifications
document is published. The conclusion of this
phase is marked by the system requirements review
(SRR), during which the requirements and
specifications for the system are evaluated.
Requirements Analysis
The requirements analysis phase begins after the SRR. In this
phase, the development team analyzes the requirements and
specifications document for completeness and feasibility. The
development team uses structured or object-oriented analysis and a
requirements classification methodology to clarify and amplify the
document. Developers work closely with the requirements
definition team to resolve ambiguities, discrepancies, and to-be-
determined (TBD) requirements or specifications.
The theme of reuse plays a prominent role throughout the
requirements analysis and design phases. Special emphasis is
placed on identifying potentially reusable architectures, designs,
code, and approaches. (An overview of reuse in the life cycle is
presented later in this section.)
When requirements analysis is complete, the development team
prepares a summary requirements analysis report as a basis for
preliminary design. The phase is concluded with a software
specifications review (SSR), during which the development team
Section 2 - Life Cycle
presents the results of their analysis for evaluation. The
requirements definition team then updates the requirements and
specifications document to incorporate any necessary modifications.
Preliminary Design
The baselined requirements and specifications form a contract
between the requirements definition team and the development team
and are the starting point for preliminary design. During this phase,
members of the development team define the software architecture
that will meet the system specifications. They organize the
requirements into major subsystems and select an optimum design
from among possible alternatives. All internal and external
interfaces are defined to the subsystem level, and the designs of
high-level functions/objects are specified.
The development team documents the high-level design of the
system in the preliminary design report. The preliminary design
phase culminates in the preliminary design review (PDR), where the
development team formally presents the design for evaluation.
Detailed Design
During the detailed design phase, the development team extends the
software architecture defined in preliminary design down to the unit
level. By successive refinement techniques, they elaborate the
preliminary design to produce "code-to" specifications for the
software. All formalisms for the design are produced, including the
following:
• Functional or object-oriented design diagrams
• Descriptions of all user input, system output (for example,
screen, printer, and plotter), and input/output files
• Operational procedures
• Functional and procedural
descriptions of each unit
• Descriptions of all internal interfaces
among units
The development team documents these
design specifications in the detailed design
document that forms the basis for
implementation. At the critical design review
(CDR), which concludes this phase, the
detailed design is examined to determine
whether levels of detail and completeness are
sufficient for coding to begin.
r
0
DEFINITIONS
\
Throughout this document, the term
unit is used to designate any set of
program statements that are logically
treated as a whole. A main program, a
subroutine, or a subprogram may each
be termed a unit. A module'n a
collection of logically related units.
Component is used in its English
language sense to denote any
constituent part.
Section 2 - Life Cycle
Implemen ta tio n
In the implementation (code, unit testing, and integration) phase, the
developers code new components from the design specifications and
revise existing components to meet new requirements. They
integrate each component into the growing system, and perform unit
and integration testing to ensure that newly added capabilities
function correctly.
In a typical project, developers build several subsystems
simultaneously from individual components. The team repeatedly
tests each subsystem as new components are coded and integrated
into the evolving software. At intervals, they combine subsystem
capabilities into a complete working system for testing end-to-end
processing capabilities. The sequence in which components are
coded and integrated into executable subsystems and the process of
combining these subsystems into systems are defined in an
implementation plan that is prepared by development managers
during the detailed design phase.
The team also produces a system test plan and a draft of the user's
guide in preparation for the system testing phase that follows.
Implementation is considered complete when all code for the system
has been subjected to peer review, tested, and integrated into the
system.
System Testing
During the system testing phase, the development team validates the
completely integrated system by testing end-to-end capabilities
according to the system test plan. The system test plan is based on
the requirements and specifications document. Successfully
completing the tests specified in the test plan demonstrates that the
system satisfies the requirements.
In this phase, the developers correct any errors uncovered by system
tests. They also refine the draft user's guide and produce an initial
system description document. System testing is complete when all
tests specified in the system test plan have been run successfully.
Acceptance Testing
In the acceptance testing phase, the system is tested by an
independent acceptance test team to ensure that the software meets
all requirements. Testing by an independent team (one that does not
have the developers' preconceptions about the functioning of the
system) provides assurance that the system satisfies the intent of the
Section 2 - Life Cycle
original requirements. The acceptance test team usually consists of
analysts who will use the system and members of the requirements
definition team.
The tests to be executed are specified in the acceptance test plan
prepared by the acceptance test team before this phase. The plan is
based on the contents of the requirements and specifications
document and approved specification modifications.
During acceptance testing, the development team assists the test team
and may execute acceptance tests under its direction. Any errors
uncovered by the tests are corrected by the development team.
Acceptance testing is considered complete when the tests specified in
the acceptance test plan have been run successfully and the system
has been formally accepted. The development team then delivers
final versions of the software and the system documentation (user's
guide and system description) to the customer.
Maintenance and Operation
At the end of acceptance testing, the system becomes the
responsibility of a maintenance and operation group. The activities
conducted during the maintenance and operation phase are highly
dependent on the type of software involved. For most flight
dynamics software, this phase typically lasts the lifetime of a
spacecraft and involves relatively few changes to the software. For
tools and general mission support software, however, this phase
may be much longer and more active as the software is modified to
respond to changes in the requirements and environment.
The maintenance and operation phase is not
specifically addressed in this document.
However, because enhancements and error
corrections also proceed through a
development life cycle, the recommended
approach described here is, for the most
part, applicable to the maintenance and
operation phase. The number and
formality of reviews and the amount of
documentation produced during
maintenance and operation vary depending
on the size and complexity of the software
and the extent of the modifications.
/'note \
' Recent SEL studies have shown that most
of the effort in initial maintenance of flight
dynamics systems is spent in enhancing
the system after launch to satisfy new
requirements for long-term operational
support. Such enhancements are usually
effected without radically altering the
architecture of the system. Errors found
during the maintenance and operation
phase are generally the same type of faults
as are uncovered during development,
although they require more effort to repair.
10
I
Section 2 - Life Cycle
TAILORING THE LIFE CYCLE
One of the key characteristics that has shaped the SEL's
recommended approach to software development is the homo-
geneous nature of the problem domain in the flight dynamics
environment. Most software is designed either for attitude
determination and control for a specific mission, for mission-general
orbit determination and tracking, or for mission planning. These
projects progress through each life cycle phase sequentially,
generating the standard documents and undergoing the normal set of
reviews.
r
(
RULE
\
The software development/
management plan (SDMP) must
describe how the life cycle will be
tailored for a specific project. See
Section 4 for more details.
Certain projects, however, do not fit this mold.
Within the STL, experiments are conducted to
study and improve the development process.
Advanced tools are developed. For these
development efforts — prototypes, expert
systems, database tools, Cleanroom
experiments, etc. — the life cycle and the
methodologies it incorporates often need
adjustment. Tailoring allows variation in the
level of detail and degree of formality of
documentation and reviews, which may be
modified, replaced, or combined in the tailoring
process. Such tailoring provides a more exact
match to unique project requirements and
development products at a lower overall cost to
the project without sacrificing quality.
The following paragraphs outline general guidelines for tailoring the
life cycle for projects of varying size and type. Additional
recommendations may be found throughout this document,
accompanying discussions of specific products, reviews, methods,
and tools.
Builds and Releases
The sizes of typical flight dynamics projects vary considerably.
Simulators range from approximately 30 thousand source lines of
code (KSLOC) to 160 KSLOC. Attitude ground support systems
for specific missions vary between 130 KSLOC and 300 KSLOC,
while large mission-general systems may exceed 1 million SLOC.
The larger the project, the greater the risk of schedule slips,
requirements changes, and acceptance problems. To reduce these
risks, the implementation phase is partitioned into increments
tailored to the size of the project.
11
Section 2 - Life Cycle
Flight dynamics projects with more than 10
KSLOC are implemented in builds. A build is a
portion of a system that satisfies, in part or
completely, an identifiable subset of the
specifications. Specifications met in one build
also are met in all successor builds. The last
build, therefore, is the complete system.
A release is a build that is delivered for
acceptance testing and subsequently released for
operational use. Projects of fewer than 300
KSLOC are usually delivered in a single release,
unless otherwise dictated by scheduling (e.g.,
launch) considerations or by TBD requirements.
Large projects (more than 300 KSLOC) are
generally delivered in multiple releases of 300 to
500 KSLOC each.
Builds within large projects may last up to 6
months. Builds within small projects may be
only 2 to 3 months in duration.
r
(
NOTE
1
Reviews are recommended
for each build. The
suggested format and
contents of build design
reviews are provided in
Section 7.
r
(
NOTE
"Y
Guidelines for tailoring the
development approach (including
reviews, documentation, and testing)
for projects of differing scope and
function are provided throughout this
document. Look for the scissors
symbol in the margin.
Reviews
Reviews are conducted to ensure that analysts and developers
understand and fulfill customer needs. Because reviews are
designed to assist developers, not to burden them unnecessarily, the
number of reviews held may vary from project to project. For tools
development, the requirements, requirements analysis, and
preliminary design might be reviewed together at PDR. For small
projects spanning just several months, only two reviews may be
applicable — the SRR and CDR. For very large projects, a CDR
could (and should) be held for each major release and/or subsystem
to cover all aspects of the system and to accommodate changing
requirements.
The criteria used to determine whether one or more reviews can be
combined depend on the development process and the life cycle
phase. In the requirements analysis phase, for example, answers to
the following questions would help determine the need for a separate
SSR:
• Are there outstanding analysis issues that need to be
reviewed?
• How much time will there be between the start of
requirements analysis and the beginning of design?
• How stable are the requirements and specifications?
12
Section 2 - Life Cycle
On small projects, technical reviews can be no more formal than a
face-to-face meeting between the key personnel of the project and
the customer technical representative. On typical flight dynamics
projects, however, reviews are formalized and follow specific
formats. Guidelines for these reviews are provided in Sections 3
through 9.
Documentation
On small projects, technical documentation is less formal than on
medium or large projects, and fewer documents are published.
Documents that would normally be produced separately on larger
projects are combined. On a small research project, a single design
document may replace the preliminary design report, detailed design
document, and system description.
Testing and Verification
Independent testing is generally not performed on small-scale, tool-
development efforts. Test plans for such projects can be informal.
Although code reading is always performed on even the smallest
project, units are often tested in logically related groups rather than
individually, and inspections are usually conducted in informal, one-
on-one sessions.
Configuration Management and Quality Assurance
Configuration management encompasses all of the activities
concerned with controlling the contents of a software system. These
activities include monitoring the status of system components,
preserving the integrity of released and developing versions of a
system, and governing the effects of changes throughout the
system. Quality assurance activities ensure that software
development processes and products conform to established
technical requirements and quality standards.
All software and documentation that are developed for delivery are
generally subject to formal configuration management and quality
assurance controls. Tools developed exclusively for internal use are
exempt, unless the tool is required to generate, run, or test a
deliverable system.
On medium and small projects, configuration control may be
performed by a designated member of the development team — a
practice that is strongly discouraged on a large project. Similarly,
the quality assurance function may be assigned to a team member
with other responsibilities or may be handled by the technical leader.
13
Section 2 - Life Cycle
Prototyping
A prototype is an early experimental model of a system, system
component, or system function that contains enough capabilities for
it to be used to establish or refine requirements or to validate critical
design concepts. In the flight dynamics environment, prototypes are
used to (1) mitigate risks related to new technology (e.g., hardware,
language, design concepts) or (2) resolve requirements issues. In
the latter case, entire projects may be planned as prototyping efforts
that are designed to establish the requirements for a later system.
Unless the end product of the entire project is
a prototype, prototyping activities are usually
completed during the requirements analysis
and design phases. The prototyping activity
has its own, usually informal, life cycle that is
embedded within the early phases of the full
system's life cycle. If any portion of the
prototype is to become part of the final
system, it must be validated through all the
established checkpoints (design reviews, code
reading, unit testing and certification, etc.).
As a rule, such prototyping activities should
require no more than 15 percent of the total
development effort.
For projects in which the end product is a
prototype, however, an iterative life cycle may
be preferable. This is particularly true when a
new user interface is a significant component
of the system. An initial version of the
prototype is designed, implemented, and
demonstrated to the customer, who adds or
revises requirements accordingly. The
prototype is then expanded with additional
builds, and the cycle continues until
completion criteria are met.
r
r
RULE
\
Ail prototyping activities must be
planned and controlled. The plan
must define the purpose and scope of
the prototyping effort, and must
establish specific completion criteria.
See Section 4 for more details.
f
WHEN TO PROTOTYPE
"I
*P& a rule of thumb, use prototyping
whenever
• the project involves new technology,
e.g., new hardware, development
language, or system architecture
• the requirements are not understood
• there are major, unresolved issues
concerning performance, reliability,
or feasibility
• the user interface is critical to system
success or is not clearly understood
Tailoring the life cycle for any type of prototyping requires careful
planning. The more new technology that is to be used on a project,
the greater the prototyping effort. The larger the prototyping effort,
the more formalized must be its planning, development, and
management. The results of even the smallest prototyping effort
must always be documented. Lessons learned from the prototype
are incorporated into plans for subsequent phases and are included
in the project history. See Section 4 for additional guidance on
planning and documenting prototyping activities.
m
i
14
!
i
Section 2 - Life Cycle
f KEY REUSE ELEMENTS ^
' Analyze these key elements of a
project for possible reuse:
• requirements characteristics
• software architecture
• software development process
• design architecture or
concepts
• test plans and procedures
• code
• user documentation
• staff
REUSE THROUGHOUT THE LIFE CYCLE
From the beginning to the end of the life cycle, the approach to
software development recommended by the SEL stresses the
principle of reuse. Broadly speaking, the reuse of existing
experience is a key ingredient to progress in any area. Without
reuse, everything must be relearned and re-created. In software
development, reuse eliminates having to "reinvent the wheel" in each
phase of the life cycle, reducing costs and improving both reliability
and productivity.
Planning for reuse maximizes these benefits by allowing the cost of
the learning curve in building the initial system to be amortized over
the span of follow-on projects. Planned reuse is a primary force
behind such recent technologies as object-oriented design and Ada.
All experience and products of the software
development life cycle — specifications, designs,
documentation, test plans, as well as code — have
potential for reuse. In the flight dynamics
environment, particular benefits have been
obtained by reusing requirements and specifi-
cations (i.e., formats, key concepts, and high-
level functionality) and by designing for reuse (see
References 7 through 10).
O
Figure 2-2 shows how reuse activities fit into the
software development life cycle. The top half of
the figure contains activities that are conducted to
enable future reuse. The lower half shows
activities in which existing software is used in the
system under development. These activities are
outlined in the following paragraphs.
domain
analysis
requirements
generalization
Activities That Enable Future Reuse
Domain analysis is the examination of the application domain of the
development organization to identify common requirements and
functions. It is usually performed during the requirements definition
and analysis phases, but it may also be conducted as a separate
activity unconnected to a particular development effort. Domain
analysis produces a standard, general architecture or model that
incorporates the common functions of a specific application area and
can be tailored to accommodate differences between individual
projects. It enables requirements generalization, i.e., the
preparation of requirements and specifications in such a way that
they cover a selected "family" of projects or missions.
15
Section 2 - Life Cycle
SRR
SSR
ATRR
Enabling
Reusing
DOMAIN ANALYSIS
GENERALIZATION OF
REQUIREMENTS AND
SPECIFICATIONS
REUSE ANALYSIS
{subsystem level)
REQUIREMENTS
DEFINITION
PHASE
T
DESIGNING FOR
REUSE
REUSE VERIFICATION
[component & unit
level)
VERBATIM REUSE
Unking to library unitsl
MODIFICATION OF
REUSABLE UNITS
EXTRACTION
OF CANDIDATES
FOR THE REUSE
I L'BRARY
A DETAILED
DESIGN PHASE
PRELIMINARY
DESIGN PHASE
REQUIREMENTS
IMPLEMENTATION-
PHASE
SYSTEM
TESTING
PHASE
J
REUSE
PRESERVATION
MAINTENANCE
AND OPERATION
PHASE
ACCEPTANCE
TESTING PHASE
ANALYSIS PHASE
Figure 2-2. Reuse Activities Within the Life Cycle
Software not originally intended for reuse is more difficult to
incorporate into a new system than software explicitly designed for
reuse. Designing for reuse provides modularity, standard inter-
faces, and parameterization. Design methods that promote
reusability are described in References 9 and 1 1 .
Reuse libraries hold reusable source code and associated
requirements, specifications, design documentation, and test data.
In addition to storing the code and related products, the library
contains a search facility that provides multiple ways of accessing
the software (e.g., by keyword or name). On projects where reuse
has been a design driver, extraction of candidate software for
inclusion in the reuse library takes place after system testing is
complete.
designing
for reuse
reuse
libraries
Reuse on Current Projects
During the requirements definition and analysis phases, reuse
analysis is performed to determine which major segments
(subsystems) of existing software can be used in the system to be
developed. In the design phases, developers verify this analysis by
examining each reusable element individually. During the
preliminary design phase, developers evaluate major components to
determine whether they can be reused verbatim or must be modified;
individual units from the reuse library are examined during the
detailed design phase.
reuse
analysis
and
verification
16
Section 2 - Life Cycle
reuse
preservation
Software may be reused verbatim or may be modified to fit the
needs of the current project. During the implementation phase,
developers integrate existing, unchanged units into the developing
system by linking directly to the reuse library. Modified software,
on the other hand, must be subjected to peer review and unit testing
before being integrated.
A final reuse activity takes place during the maintenance and
operation phase of the life cycle. Through the changes that it
implements, the maintenance team can positively or negatively affect
the reusability of the system; "quick fixes", for example, may
complicate future reuse. Reuse preservation techniques for
maintenance use many of the same practices that promote reuse
during the analysis, design, and implementation phases.
r
(
NOTE
MEASURES
Measures of project progress and viability are key to the effective
management of any software development effort. In each phase of
the life cycle, there are certain critical metrics that a manager must
examine to evaluate the progress, stability, and quality of the
development project.
\
Sections 3 through 9 of
this document provide
detailed information
about the objective
measures used in each
phase. Look for the
MEASURES heading and
symbol.
Both objective and subjective data are
measured. Objective data are actual counts of
items (e.g., staff hours, SLOC, errors) that can
be independently verified. Subjective data are
dependent on an individual's or group's
assessment of a condition (e.g., the level of
difficulty of a problem or the clarity of
requirements). Together, these data serve as a
system of checks and balances. Subjective data
provide critical information for interpreting or
validating objective data, while objective data
provide definitive counts that may cause the
manager to question his or her subjective
understanding and to investigate further.
Objective measures can be further classified into two groups: those
that measure progress or status and those that measure project
quality (e.g., stability, completeness, or reliability). Progress
measures, such as the number of units coded or the number of tests
passed, are evaluated against calculations of the total number of
items to be completed. Quality measures, on the other hand, are
17
Section 2 - Life Cycle
Table 2-1. Measures Recommended by the SEL
MEASURES
MEASURE
SOURCE
FREQUENCY
MAJOR APPLICATION
CLASS
ESTIMATES
Estimates of:
•Total SLOC
(new, modified,
reused)
• Total units
• Total effort
• Major dates
Managers
Monthly
• Project stability
• Planning aid
RESOURCES
• Staff hours
(total & by activity)
Developers
Weekly
• Project stability
• Repianning indicator
• Computer use
Automated
tool
Weekly
• Effectiveness/impact of the
development process
being applied
STATUS
• Requirements
(growth, TBDs,
changes, Q&As)
Managers
Biweekly
• Project progress
• Adherence to defined
process
• Units designed,
Developers
Biweekly
• Stability and quality of
coded, tested
requirements
• SLOC (cumulative)
Automated
Weekly
• Tests (complete,
Developers
Biweekly
passed)
ERRORS/
• Errors (by
Developers
By event
• Effectiveness/impact of the
CHANGES
category)
development process
• Changes (by
Developers
By event
• Adherence to defined
category)
process
• Changes (to source)
Automated
Weekly
FINAL
Actuals at completion:
Managers
1 time, at
■ Build predictive models
CLOSE-OUT
■ Effort
• Size (SLOC,
units)
• Source
characteristics
• Major dates
completion
• Plan/manage new projects
only useful if the manager has access to models or metrics that represent what should be
expected.
In the SEL, measurement data from current and past projects are stored in a project
histories database. Using information extracted from such a database, managers can gauge
whether measurement trends in the current project differ from the expected models for the
development environment. (See Section 6 of Reference 12.)
The management measures recommended by the SEL are listed in Table 2-1. Figure 2-3
shows in which phases of the life cycle each of these measures is collected.
As Table 2-1 shows, developers are responsible for providing many of the measures that
are collected. In the SEL, developers use various data collection forms for this purpose.
The individual forms are discussed in the sections of this document covering the life-cycle
phases to which they apply.
18
Section 2 - Life Cycle
STATUS
ERRORS/
CHANGES
k\R,qulr.^ly<^
"E
Units designed
«*$
VojTests run/paseedjv
I
jChanges and errors <by category!
Changes to source code
REQUIREMENTS
DEFINITION
REQUIRE
MENTS
ANALVSIS
PRELIMI
NARV
DESIGN
DETAILED
DESIGN
IMPLEMENTATION
ACCEPTANCE
TESTING
MAINTENANCE AND
OPERATION
Figure 2-3. Graph Showing in Which Life-Cycle Phases Each Measure Is Collected
EXPERIMENTATION
Measurement is not only essential to the management of a software
development effort; it is also critical to software process
improvement. In the SEL, process improvement is a way of life.
Experiments are continually being conducted to investigate new
software engineering technologies, practices, and tools in an effort
to build higher-quality systems and improve the local production
process. The SEL's ongoing measurement program provides the
baseline data and models of the existing development environment
against which data from experimental projects are compared.
For several years, the SEL has been conducting experiments and
measuring the impact of the application of the Cleanroom
methodology (References 2, 3, and 4), which was developed in the
early 1980s by Harlan Mills. The goal of the Cleanroom
methodology is to build a software product correctly the first time.
Cleanroom stresses disciplined "reading" techniques that use the
human intellect to verify software products; testing is conducted for
the purpose of quality assessment rather than as a method for
detecting and repairing errors.
The Cleanroom methodology is still in the early stages of evaluation
by the SEL. Although some of the methods of Cleanroom are the
same as existing methods in the SEL's recommended approach —
e.g., code reading — other aspects remain experimental.
19
Section 2 - Life Cycle
Consequently, the Cleanroom methodology is used throughout this
document as an example of the integral aspect of experimentation
and process improvement to the SEL's recommended approach.
Variations in life cycle processes, methods, and tools resulting from
the application of Cleanroom will be highlighted. Look for the
experimentation symbol.
r
r
DEFINITION
1
The term Cleanroomwas
borrowed from integrated circuit
production. It refers to the
dust-free environments in which
the circuits are assembled.
i
20
Section 3 - Requirements Definition
IK
CYCLE
PHASES
REQUIREMENTS
DEFINITION
REQUfRE.
MENTS
ANALYSIS
PRELIMI-
NARY
DESIGN
DETAILED
DESIGN
IMPLEMENTATION
SYSTEM
TESTING
ACCEPTANCE
TESTtNO
SECTION 3
THE REQUIREMENTS DEFINITION PHASE
mm
ENTRY CRITERIA
• Problem/project description completed
• Project approved
EXIT CRITERIA
System and operations concept completed
SRR completed
Requirements and specifications baselined |
PRODUCTS
> System and operations concept document
• Requirements and specifications
document
MEASURES
• Staff hours
• Number of requirements defined
vs. estimated total requirements
• Percentage of requirements with
completed specifications
IjyUlLUUIULIJI
METHODS AND TOOLS
■ Structured or object-oriented analysis
■ Walk-throughs
• Prototyping
mmmmmm
KEY ACTIVITIES
Requirements Definition Team
• Develop a system concept
• Prepare the reuse proposal
• Develop an operations concept
• Define the detailed requirements
• Derive the specifications
• Conduct the SCR and SRR
Management Team
• Develop a plan for the phase
• Staff and train the requirements
definition team
• Interact with the customer
• Evaluate progress and products
• Control major reviews
WPM#^HW%piPIP^%^liiiil^
21
Section 3 - Requirements Definition
OVERVIEW
The purpose of the requirements definition phase is to produce a
clear, complete, consistent, and testable specification of the technical
requirements for the software product.
Requirements definition initiates the software development life
cycle. During this phase, the requirements definition team uses an
iterative process to expand a broad statement of the system
requirements into a complete and detailed specification of each
function that the software must perform and each criterion that it
must meet. The finished requirements and specifications, combined
with the system and operations concept, describe the software
product in sufficient detail so that independent software developers
can build the required system correctly.
The starting point is usually a set of high-level requirements from
the customer that describe the project or problem. For mission
support systems, these requirements are extracted from project
documentation such as the system instrumentation requirements
document (SERD) and the system operations requirements document
(SORD). For internal tools, high-level requirements are often
simply a list of the capabilities that the tool is to provide.
In either case, the requirements definition team formulates an overall
concept for the system by examining the high-level requirements for
similarities to previous missions or systems, identifying existing
software that can be reused, and developing a preliminary system
architecture. The team then defines scenarios showing how the
system will be operated, publishes the system and operations
concept document, and conducts a system concept review (SCR).
(See Figure 3-1.)
Following the SCR, the team
derives detailed requirements
for the system from the high-
level requirements and the
system and operations concept.
Using structured or object-
oriented analysis, the team
specifies the software functions
and algorithms needed to satisfy
each detailed requirement.
(note
r
In the flight dynamics
environment,
membership in
the teams that
perform the
technical activi-
ties of software
development overlap:
The overlap ensures
Ijhat experienced...
flMOTE (cont.)
\
analysts from the
*N requirements
definition team plan
acceptance tests,
and that developers
assist in defining
requirements,
planning for reuse,
and supporting
acceptance testing, j
22
Section 3 - Requirements Definition
PROJECT OR PROBLEM
DESCRIPTION
ENGINEERING
STUDY REPORTS
SCR-HARDCOPY-MATERIALS
NOTE: In this figure, as In all data flow diagrams (DFDs) in this document, rectangles denote external entities,
circles represent processes, and parallel lines are used for data stores (in this case, documents). The processes
labelled 3.1, 3.2, and 3.3 are described in the KEY ACTIVITIES subsection below. The SCR is described under
REVIEWS and the system and operations concept document is covered in PRODUCTS.
Figure 3-1. Generating the System and Operations Concept
When the specifications are complete, the requirements definition team publishes the
requirements and specifications document in three parts: (1) the detailed requirements, (2)
the functional or object-oriented specifications, and (3) any necessary mathematical
background information. At the end of the phase, the team conducts a system requirements
review (SRR) to demonstrate the completeness and quality of these products. (See Figure
3-2.)
23
Section 3 - Requirements Definition
PROJECT OR PROBLEM
SYSTEM AND OPERATIONS
CONCEPT DOCUMENT
INFORMATION FROM
PREVIOUS PROJECTS
ITEMIZED HOH-LEVEL
INTERFACE CONTROL DOCUMENTS
SRR
PARTICIPANTS
SRR HARDCOPY MATERIALS
NOTE: The processes labelled 3.S, 3.6, and 3.7 are discussed In the KEY ACTIVITIES subsection. The requirements and
specifications document is described under the heading PRODUCTS. The REVIEWS subsection covers the SRR.
Figure 3-2. Developing Requirements and Specifications
24
Section 3 - Requirements Definition
KEYACTTVTTIES
The key technical and managerial activities of the requirements
definition phase are itemized below.
Activities of the Requirements Definition Team
• Develop a system concept. Collect and itemize all high-level
requirements for the system. Describe the basic functions that
the system must perform to satisfy these high-level
requirements. Address issues such as system lifetime (usage
timelines), performance, security, reliability, safety, and data
volume.
From this functional description, generate an ideal, high-level
system architecture identifying software programs and all major
interfaces. Allocate each high-level requirement to software,
hardware, or a person. Specify the form (file, display, printout)
of all major data interfaces.
r
r TAILORING NOTE ^
On small projects that are
developing tools or
prototypes, requirements
definition and analysis are
often combined into a single
phase. On such projects,
developers generally perform
all requirements definition
activities.
r
(
REUSE NOTE
©
^
Although use of existing software can
reduce effort significantly, some
compromises may be necessary. Ensure
that all tradeoffs are well understood.
Avoid these two pitfalls:
• Failing to make reasonable compromises,
thus wasting effort for marginal
improvement in quality or functionality
• Making ill-advised compromises that
save development effort at the cost of
significantly degrading functionality or
performance
Prepare the reuse proposal. Review the
requirements and specifications, system
descriptions, user's guides, and source code of
related, existing systems to identify candidates for
reuse. For flight dynamics mission support
systems, this involves reviewing support systems
for similar spacecraft. Select strong candidates
and estimate the corresponding cost and reliability
benefits. Determine what compromises are
necessary to reuse software and analyze the
tradeoffs.
Adjust the high-level architecture to account for
reuseable software. Record the results of all reuse
analysis in a reuse proposal that will be included
in the system and operations concept document.
Develop an operations concept. This clearly
defines how the system must operate within its
environment. Include operational scenarios for all
major modes of operation (e.g., emergency versus
normal). Be sure to include the end-user in this
process. Conduct an SCR.
25
Section 3 - Requirements Definition
Define the detailed
requirements. Based on
the high-level requirements
and the system concept and
architecture, define all
software requirements down
to the subsystem level. If
the system is large (with
many subsystems) or if it
will interface with other
systems, explicitly define all
external interfaces.
r
NOTE
f NOTE
1
Sea the PRODUCTS
subsection below for
detailed contents of the
system and operations
concept as well as the
requirements and
functional specifications
documents.
"Y
The SCR and SRR
are covered in
detail in the
REVIEWS
subsection.
Q
Determine system performance and reliability requirements. If
certain acceptance criteria apply to a requirement (e.g., meeting a
particular response time), specify the test criteria with the
requirement. Identify all intermediate products needed to
acceptance test the system.
Derive the functional specifications for the system from the
requirements. Identify the primary input and output data needed
to satisfy the requirements. Use structured or object-oriented
analysis to derive the low-level functions and algorithms the
software must perform. Define all reports and displays and
indicate which data the user must be able to modify.
Keep the specifications design-neutral and language-neutral; i.e.,
concentrate on what the software needs to do, rather than how it
will do it. Create a traceability matrix to map each low-level
function or data specification to the requirements it fulfills.
Ensure that all requirements and
specifications are given a thorough peer
review. Watch for interface problems
among major functions and for
specifications that are duplicated in
multiple subsystems. Ensure
compatibility and consistency in
notation and level of accuracy among
the specified algorithms.
Prepare the requirements and
specifications document, including any
necessary mathematical background
information, as a basis for beginning
software development.
TAILORING NOTE
\
On very large or complex projects,
it is generally advisable to hold a
preliminary system requirements
review (PSRR) as soon as a draft of
the requirements document is
complete. This allows end-users
and key developers to raise critical
issues before requirements are
finalized. See the REVIEWS
subsection for additional
information on the PSRR.
26
Section 3 - Requirements Definition
• Conduct the SRR and incorporate approved changes into the
requirements and specifications. Place the document under
configuration management as the system baseline.
Activities of the Management Team
The management activities performed during this phase pave the
way for all future phases of the project's life cycle. Specifically,
managers must accomplish the following:
• Develop a plan for the phase. (Detailed planning of the entire
development effort is deferred to the requirements analysis
phase, after system specifications have been defined.) Address
the staffing of the teams that will perform the technical work, the
groups and individuals that will interface with the teams, the
technical approach, milestones and schedules, risk management,
and quality assurance. List the reviews to be conducted and
their level of formality.
• Staff and train the requirements definition team. Ensure that
the team contains the necessary mix of skills and experience for
the task. For mission support systems, the team should include
analysts with strong backgrounds in mission analysis, attitude
and orbit determination, and operations. The reuse working
group must include key software developers as well as
experienced analysts. Ensure that staff members have the
necessary training in the procedures, methods, and tools needed
to accomplish their goals.
.(
DEFINITION
\
'The toy developers who participate in
reuse analysis and other requirements
definition activities have special technical
roles throughout the life cycle. The value
of these application specialists lies in their
specific knowledge and experience. On
mission support projects, for example, the
application specialist will not only have
developed such software previously, but
also will understand the complex mathe-
matics and physics of flight dynamics. The
application specialist often acts as a
"translator," facilitating communications
between analysts and developers.
Interact with the customer to assure
visibility and resolution of all issues.
Conduct regular status meetings and ensure
communications among team members,
managers, customers, and other groups
working on aspects of the project.
Evaluate progress and products. Review
the system and operations concept and the
requirements and specifications. Collect
progress measures and monitor adherence
to schedules and cost.
Control major reviews. Ensure that key
personnel are present at reviews, both
formal and informal. Participate in the
SCR and SRR.
27
Section 3 - Requirements Definition
METHODS AND TOOLS
The methods and tools used during the requirements definition
phase are
• Structured or object-oriented analysis
• Walk-throughs
• Prototyping
Each is discussed below.
Analysis Methodologies
Structured analysis and object-oriented analysis are techniques used
to understand and articulate the implications of the textual statements
found in the requirements definition. The requirements definition
team uses analysis techniques to derive the detailed specifications for
the system from the higher-level requirements. The analysis
methodology selected for the project should be appropriate to the
type of problem the system addresses.
Functional decomposition is currently the most commonly used
method of structured analysis. Functional decomposition focuses
on processes, each of which represents a set of transformations of
input to output. Using this method, the analyst separates the
primary system function into successively more detailed levels of
processes and defines the data flows between these processes.
Authors associated with structured analysis include E. Yourdon,
L. Constantine, and T. DeMarco (References 13 and 14). S.
Mellor and P. Ward have published a set of real-time extensions to
this method for event-response analysis (Reference 15).
Object-oriented analysis combines techniques from the realm of data
engineering with a process orientation. This method defines the
objects (or entities) and attributes of the real-world problem domain
and their interrelationships. The concept of an object provides a
means of focusing on the persistent aspect of entities — an emphasis
different from that of structured analysis. An object-oriented
approach is appropriate for software designed for reuse because
specific objects can be readily extracted and replaced to adapt the
system for other tasks (e.g., a different spacecraft). Details of the
object-oriented approach may be found in References 11, 16, and
17.
In structured analysis, functions are grouped together if they are
steps in the execution of a higher-level function. In object-oriented
analysis, functions are grouped together if they operate on the same
data abstraction. Because of this difference, proceeding from
functional specifications to an object-oriented design may necessitate
structured
analysis
object-
oriented
analysis
28
Section 3 - Requirements Definition
r
(
NOTE
\
CASE tools can greatly increase
productivity, but they can only aid or
Improve those activities that the
team or individual knows how to
perform manually. CASE tools
cannot improve analysis, qualify
designs or code, etc., if the user does
not have have a clear definition of the
manual process involved.
recasting the data flow diagrams. This is a
significant amount of effort that can be avoided
by assuming an object-oriented viewpoint
during the requirements definition phase.
The diagramming capabilities of CASE tools
facilitate application of the chosen analysis
methodology. The tools provide a means of
producing and maintaining the necessary data
flow and object-diagrams online. They usually
include a centralized repository for storing and
retrieving definitions of data, processes, and
entities. Advanced tools may allow the
specifications themselves to be maintained in
the repository, making it easier to trace the
requirements to design elements.
Selected tools should be capable of printing the diagrams in a form
that can be directly integrated into specifications and other
documents. Examples of CASE tools currently used in the flight
dynamics environment include System Architect and Software
Through Pictures.
walk-throughs
inspections
Walk-throughs
In all phases of the life cycle, peer review ensures the quality and
consistency of the products being generated. The SEL recommends
two types of peer review — walk-throughs and inspections — in
addition to formal reviews such as the SRR and CDR.
Walk-throughs are primarily conducted as an aid to understanding,
so participants are encouraged to analyze and question the material
under discussion. Review materials are distributed to participants
prior to the meeting. During the meeting, the walk-through leader
gives a brief, tutorial overview of the product, then walks the
reviewers through the materials step-by-step. An informal
atmosphere and a free interchange of questions and answers among
participants fosters the learning process.
Inspections, on the other hand, are designed to uncover errors as
early as possible and to ensure a high-quality product. The
inspection team is a small group of peers who are technically
competent and familiar with the application, language, and standards
used on the project. The products to be reviewed (e.g.,
requirements, design diagrams, or source code) are given to the
inspection team several days before the meeting. Inspectors
examine these materials closely, noting all errors or deviations from
29
Section 3 - Requirements Definition
standards, and they come to the review meeting prepared to itemize
and discuss any problems.
In both walk-throughs and inspections, a designated team member
records the minutes of the review session, including issues raised,
action items assigned, and completion schedules. Closure of these
items is addressed in subsequent meetings.
In the requirements definition phase, walk-throughs of the
requirements and specifications are conducted to ensure that key
interested parties provide input while requirements are in a formative
stage. Participants include the members of the requirements
definition team, representatives of systems that will interface with
the software to be developed, and application specialists from the
development team.
Prototyping
During the requirements definition phase, prototyping may be
needed to help resolve requirements issues. For mission support
systems, analysts use prototyping tools such as MathCAD to test the
mathematical algorithms that will be included in the specifications.
For performance requirements, platform-specific performance
models or measurement/monitoring tools may be used.
MEASURES
Objective Measures
Three progress measures are tracked during the requirements
definition phase:
• Staff hours — i.e., the cumulative effort hours of the project
staff
• Number of requirements with completed specifications versus
the total number of requirements
• Number of requirements defined versus the total number of
estimated requirements
The sources of these data and the frequency with which the data are
collected and analyzed are shown in Table 3- 1 .
30
Section 3 - Requirements Definition
Table 3-1. Objective Measures Collected During the
Requirements Definition Phase
MEASURE
SOURCE
FREQUENCY
(COLLECT/ANALYZE)
Staff hours (total and
by activity)
Requirements
definition team and
managers
(time accounting)
Weekly/monthly
Requirements status
(percentage of
completed
specifications; number
of requirements defined)
Managers
Biweekly/biweekly
Estimates of total
requirements, total
requirements definition
effort, and schedule
Managers
Monthly/monthly
staff hours
completed
specifications
defined
requirements
Evaluation Criteria
Effort should be gauged against estimates based on historical data
from past projects of a similar nature. Monitor staff hours
separately for each major activity. If schedules are being met but
hours are lower than expected, the team may not be working at the
level of detail necessary to raise problems and issues.
To judge progress following the SCR, track the number of
requirements for which specifications have been written as a
percentage of the total number of requirements. ("Total require-
ments" includes those for which a need has been identified, but for
which details are still TBD.)
Monitor requirements growth by tracking the number of
requirements that have been defined against an estimated total for the
project. If requirements stability is an issue, consider tracking the
number of changes made to requirements as well. Excessive growth
or change to specifications point to a need for greater management
control or to the lack of a detailed system operations concept.
31
Section 3 - Requirements Definition
PRODUCTS
The key products of the requirements definition phase are the system
and operations concept (SOC) document and the requirements and
specifications document. The content and form of these products
are addressed in the following paragraphs.
System and Operations Concept Document
The SOC document lists the high-level requirements, defines the
overall system architecture and its operational environment, and
describes how the system will operate within this environment. The
document provides a base from which developers can create the
software structure and user interface. The format recommended for
the document is shown in Figure 3-3.
The SOC is not usually updated after publication. During the
requirements analysis phase, developers refine the reuse proposal
contained in the document and publish the resulting reuse plan in the
requirements analysis report. Similarly, developers refine the
operational scenarios and include them in the requirements analysis,
preliminary design, and detailed design reports. Because these and
other pieces of the SOC are reworked and included in subsequent
development products, it may not be necessary to baseline or
maintain the SOC itself.
Requirements and Specifications Document
This document is produced by the requirements definition team as
the key product of the requirements definition phase. It is often
published in multiple volumes: volume 1 defines the requirements,
volume 2 contains the functional specifications, and volume 3
provides mathematical specifications. The document is distributed
prior to the SRR, updated following the review to incorporate
approved review items, and then baselined.
The requirements and specifications document contains a complete
list of all requirements — including low-level, derived requirements
— and provides the criteria against which the software system will
be acceptance tested. The functional or object specifications, which
identify the input data, output data, and processing required to
transform input to output for each process, provide the basis for
detailed design and system testing. The document also includes the
mathematical background information necessary to evaluate
specified algorithms and to design the system correctly.
32
Section 3 - Requirements Definition
The recommended outline for the requirements and specifications document is presented in
Figure 3-4.
SYSTEM AND OPERATIONS CONCEPT DOCUMENT
This document provides a top-down view of the system from the user's perspective by describing
the behavior of the system in terms of operational methods and scenarios. Analysts should
provide the document to the development team by the end of the requirements definition phase.
The suggested contents are as follows:
1. Introduction
a. Purpose and background of the system
b. Document organization
2. System overview
a. Overall system concept
b. System overview with high-level diagrams showing external interfaces and data flow
c. Discussion and diagrams showing an ideal, high-level architecture for the system
3. Reuse proposal
a. Summary of domain and reuse analysis performed
b. Description of potential candidates for reuse — architectural components,
designs, operational processes, and test approaches — and associated trade-offs
c. Discussion and diagrams of the proposed high-level architecture, as adjusted to
incorporate reusable elements
4. Operational environment — description and high-level diagrams of the environment in
which the system will be operated
a. Overview of operating scenarios
b. Description and high-level diagrams of the system configuration (hardware and software)
c. Description of the responsibilities of the operations personnel
5. Operational modes
a. Discussion of the system's modes of operation (e.g., critical versus normal and
launch/early mission versus on-orbit operations)
b. Volume and frequency of data to be processed in each mode
c. Order, frequency, and type (e.g., batch or interactive) of operations in each mode
6. Operational description of each major function or object in the system
a. Description and high-level diagrams of each major operational scenario showing all input,
output, and critical control sequences
b. Description of the input data, including the format and limitations of the input. Sample
screens (i.e., displays, menus, popup windows) depicting the state of the function
before receiving the input data should also be included.
c. Process — high-level description of how this function will work
d. Description of the output data, including the format and limitations of the output.
Samples (i.e., displays, reports, screens, plots) showing the results after processing
the input should also be included.
e. Description of status and prompt messages needed during processing, including
guidelines for user responses to any critical messages
7. Requirements traceability matrix mapping each operational scenario to requirements
Figure 3-3. SOC Document Contents
33
Section 3 - Requirements Definition
REQUIREMENTS AND SPECIFICATIONS DOCUMENT
This document, which contains a complete description of the requirements for the software
system, is the primary product of the requirements definition phase. In the flight dynamics
environment, it is usually published in three volumes: volume 1 lists the requirements, volume 2
contains the functional specifications, and volume 3 provides the mathematical specifications.
1. Introduction
a. Purpose and background of the project
b. Document organization
2. System overview
a. Overall system concept
b. Expected operational environment (hardware, peripherals, etc.)
c. High-level diagrams of the system showing the external interfaces and data flows
d. Overview of high-level requirements
3. Requirements — functional, operational (interface, resource, performance, reliability, safety,
security), and data requirements
a. Numbered list of high-level requirements with their respective derived requirements
(derived requirements are not explicitly called out in source documents such as the SIRD
or SORD, but represent constraints, limitations, or implications that must be satisfied to
achieve the explicitly stated requirements)
b. For each requirement:
(1) Requirement number and name
(2) Description of the requirement
(3) Reference source for the requirement, distinguishing derived from explicit
requirements
(4) Interfaces to other major functions or external entities
(5) Performance specifications — frequency, response time, accuracy, etc.
4. Specifications
a. Discussion and diagrams showing the functional or object hierarchy of the system
b. Description and data flow/object diagrams of the basic processes in each major
subsystem
c. Description of general conventions used (mathematical symbols, units of measure, etc.)
d. Description of each basic function/object, e.g.:
(1) Function number and name
(2) Input
(3) Process — detailed description of what the function should do
(4) Output
(5) Identification of candidate reusable software
(6) Acceptance criteria for verifying satisfaction of related requirements
(7) Data dictionary — indicating name of item, definition, structural composition of the
item, item range, item type
5. Mapping of specifications to requirements — also distinguishes project-unique
requirements from standard requirements for the project type (AGSS, dynamics
simulator, etc.)
& Mathematical specifications — formulas and algorithm descriptions to be used in
implementing the computational functions of the system
a. Overview of each major algorithm
b. Detailed formulas for each major algorithm
Figure 3-4. Requirements and Specifications Document Contents
34
Section 3 - Requirements Definition
REVIEWS
Two key reviews are conducted during the requirements definition
phase: the system concept review and the system requirements
review. The purpose, participants, scheduling, content, and format
of these reviews are discussed in the subsections that follow.
System Concept Review
The SCR gives users, customer representatives, and other interested
parties an opportunity to examine and influence the proposed system
architecture and operations concept before detailed requirements are
written. It is held during the requirements definition phase after
system and operations concepts have been defined. In the flight
dynamics environment, a full SCR is conducted for large, mission
support systems. For smaller development efforts without complex
external interfaces, SCR material is presented informally. The SCR
format is given in Figure 3-5.
SCR FORMAT
Presenters — requirements definition team
Participants
• Customer representatives
• User representatives
• Representatives of systems and groups that will interface with the
system to be developed
• Senior development team representatives (application specialists)
• Quality assurance (QA) representatives
• System capacity/performance analysts
Schedule — after the system and operations document is complete
and before requirements definition begins
Agenda — summary of high-level requirements (e.g., from SIRD and
SORD) and presentation of system and operations concepts;
interactive participation and discussion should be encouraged.
Materials Distribution
• The system and operations concept document is distributed 1 to 2
weeks before the SCR.
« Hardcopy material is distributed a minimum of 3 days before SCR.
Figure 3-5. SCR Format
SCR Hardcopy Material
The hardcopy materials distributed for use at the review should
correspond to the presentation viewgraphs. A suggested outline for
the contents of SCR hardcopy material is presented in Figure 3-6.
35
Section 3 - Requirements Definition
HARDCOPY MATERIAL FOR THE SCR
1. Agenda — outline of review material
2. Introduction — purpose of system and background of the project
3. High-level requirements
a. Derivation of high-level requirements — identification of input (such as the SIRD and
SORD) from project office, support organization, and system engineering organization
b. Summary of high-level requirements
4. System concept
a. Assumptions
b. Overall system concept
c. List of major system capabilities
5. Reuse considerations
a. Existing systems reviewed for possible reuse
b. Reuse trade-offs analyzed
c. Proposed reuse candidates
& High-level system architecture
a. Description and high-level diagrams of the proposed system architecture (hardware and
software), including external interfaces and data flow
b. Diagrams showing the high-level functions of the system — their hierarchy and
interaction
7. System environment
a. Computers and peripherals
b. Communications
c. Operating system limitations and other constraints
& Operations concept
a. Assumptions
b. Organizations that provide system and support input and receive system output
c. System modes of operation (e.g., critical versus normal and launch versus on-orbit
operations)
d. Order, frequency, and type (e.g., batch or interactive) of operations in each mode
e. Discussion and high-level diagrams of major operational scenarios
f. Performance implications
9. Issues, TBD items, and problems — outstanding issues and TBDs and a course of action to
handle them
Figure 3-6. SCR Hardcopy Material Contents
System Requirements Review (SRRI
When the requirements and specifications document is distributed, the requirements
definition team conducts an SRR to present the requirements, obtain feedback, and facilitate
resolution of outstanding issues. The SRR format, schedule, and participants are given in
Figure 3-7.
36
Section 3 - Requirements Definition
■?-
SRR FORMAT
Presenters — requirements definition team
Participants
• Customer representatives
• User representatives
• Configuration Control Board (CCB)
• Senior development team representatives
• System capacity/performance analysts
• Quality assurance representatives
Schedule — after requirements definition is complete and before the
requirements analysis phase begins
Agenda — selective presentation of system requirements,
highlighting operations concepts and critical issues (e.g., TBD
requirements)
Materials Distribution
• The requirements and specifications document is distributed 1 to 2
weeks before SRR.
• Hardcopy material is distributed a minimum of 3 days before SRR.
Figure 3-7. SRR Format
f TAILORING NOTE "\
For very large or complex
projects, hold a preliminary SRR
to obtain interim feedback from
users and customers. The
format of the PSRR is the same
as the SRR. Hardcopy material
contains preliminary results and
is adjusted to reflect work
accomplished to date.
SRR Hardcopy Material
Much of the hardcopy material for the review
can be extracted from the requirements and
specifications document. An outline and
suggested contents of the SRR hardcopy
material are presented in Figure 3-8.
r
r
DEFINITION
1
The Configuration Control Board (CCBlis
a NASA/GSFC committee that reviews,
controls, and approves FDD systems,
internal interfaces, and system changes.
Among its duties are the approval of
system baseline reviews (e.g., SRR, PDR)
and baseline documents (e.g., require-
ments and specifications, detailed design
document).
37
Section 3 - Requirements Definition
10.
11.
12.
HARDCOPY MATERIAL FOR THE SRR
Agenda — outline of review material
Introduction — purpose of system and background of the project
Requirements summary — review of top-level {basic) requirements developed to form
the specifications
a. Background of requirements — overview of project characteristics and major events
b. Derivation of requirements — identification of input from project office, support
organization, and system engineering organization used to formulate the requirements:
e.g., the SIRD, SORD, memoranda of information (MOIs), and memoranda of
understanding (MOUs)
c. Relationship of requirements to level of support provided — typical support, critical
support, and special or contingency support
d. Organizations that provide system and support input and receive system output
e. Data availability — frequency, volume, and format
f. Facilities — target computing hardware and environment characteristics
g. Requirements for computer storage, failure/recovery, operator interaction, diagnostic
output, security, reliability, and safety
h. Requirements for support and test software — data simulators, test programs, and
utilities
i. Overview of the requirements and specifications document — its evolution,
including draft dates and reviews and outline of contents
Interface requirements — summary of human, special-purpose hardware, and
automated system interfaces, including references to interface agreement documents
(IADs) and interface control documents (ICDs)
Performance requirements — system processing speed, system response time, system
failure recovery time, and output data availability
Environmental considerations — special computing capabilities, e.g., graphics,
operating system limitations, computer facility operating procedures and policies, support
software limitations, database constraints, and resource limitations
Derived system requirements — list of those requirements not explicitly called out in
the SIRD, SORD, MOIs, and MOUs, but representing constraints, limitations, or
implications that must be satisfied to achieve the explicitly stated requirements
Operations concepts
a. High-level diagrams of operating scenarios showing intended system behavior from the
user's viewpoint
b. Sample input screens and menus; sample output displays, reports, and plots; critical
control sequences
Requirements management approach
a. Description of controlled documents, including scheduled updates
b. Specifications/requirements change-control procedures
c. System enhancement/maintenance procedures
Personnel organization and interfaces
Milestones and suggested development schedule
Issues, TBD items, and problems — a characterization of all outstanding requirements
issues and TBDs, an assessment of their risks (including the effect on progress), and a
course of action to manage them, including required effort, schedule, and cost
Figure 3-8. SRR Hardcopy Material Contents
38
Section 3 - Requirements Definition
EXTT CRITERIA
Following the SRR, the requirements definition team analyzes all
RIDs, determines whether requirements changes are necessary, and
revises the requirements and specifications document accordingly.
The updated document is sent to the configuration control board
(CCB) for approval. Once approved, it becomes a controlled
document — the requirements baseline.
Use the following questions to determine whether the requirements
and specifications are ready to be given to the development team for
analysis:
• Do specifications exist for all requirements for which
information is available? Have TBD requirements been
minimized?
• Have external interfaces been adequately defined?
• Are the specifications consistent in notation, terminology, and
level of functionality, and are the algorithms compatible?
• Are the requirements testable?
• Have key exit criteria been met? That is, has the requirements
and specifications document been distributed, has the SRR been
successfully completed, and have all SRR RIDs been answered?
When the answer to these questions is
definition phase is complete.
'yes," the requirements
r
o
NOTE
\
During and following formal reviews,
review item disposition forms (RIDs)
are submitted by participants to
identify issues requiring a written
response or further action. Managers
are responsible for ensuring that all
RIDs are logged and answered and
resulting action items are assigned and
completed.
39
o
to
(D
O
3
(0
I
30
(D
\h
c
3
3
(D
3
a
CD
J I 111
in "I
.llilidi . ,M
jin 'i is
Section 4 - Requirements Analysis
CYCLE
PHASES
REQUJR
mm
NTS
REQUIRE-
MENTS
ANALYSIS
06 SIGN
DETAILED
DESIGN
IMPLEMENTATION
?«
ACp^ANCEj
ting
SECTION 4
THE REQUIREMENTS ANALYSIS PHASE
PHASE HIGHLIGHTS __. _ ,
Memammm
ENTRY CRITERIA
1 System and operations concept completed
SRR completed
> Requirements and specifications baselined
EXIT CRITERIA
• Requirements analysis report completed
• Software specification review (SSR)
completed
• SSR RIDs resolved
M
PRODUCTS
> Requirements analysis report
■ Software development/management plan
■ Updated requirements and specifications
MEASURES
• Staff hours
•TBD requirements
> Requirements questions/answers
• Requirements changes
« Estimates of system size, effort,
and schedule
METHODS AND TOOLS
• Requirements walk-throughs *
• Requirements classification *
> Requirements forms
• Requirements analysis methods and
CASE tools
■ Prototyping
» Project library
KEY ACTIVITIES
Requirements Definition Team
• Resolve ambiguities, discrepancies,
and TBDs in the specifications
• Participate in the SSR
Development Team
• Analyze and classify requirements
■ Refine the reuse proposal
• Identify technical risks
• Prepare the requirements analysis report
•Conduct the SSR
Management Team
• Prepare the software development/
management plan
• Staff and train the development team
• Interact with analysts and customers to
facilitate resolution of requirements issues
• Review the products of the requirements
analysis process
Plan the transition to preliminary design
■ ■ hj ■ ■ ■ ■ ■ ■ _■ ■ n
muumUw
UUUUUMN
UUUlAid
TF
The guiding philosophy of the Cleanroom method is intellectual control and reliance on
the human mind to build a quality product the first time. Walk-throughs and require-
ments classifications help intensify scrutiny and analysis of requirements early in the life
cvcle so that requirements modifications during subsequent phases are minimized.
asasssA
PRECEDING FA3E £?_ANK NOV RLMcD
41
Section 4 - Requirements Analysis
OVERVIEW
The purpose of the requirements analysis phase is to ensure that the
requirements and specifications are feasible, complete, and
consistent, and that they are understood by the development team.
Requirements analysis begins after the
requirements definition team completes the
requirements and specifications and holds the
SRR. During requirements analysis, members of
the development team carefully study the
requirements and specifications document. They
itemize and categorize each statement in the
document to uncover omissions, contradictions,
TBDs, and specifications that need clarification or
amplification. The development team takes the
analysis that was performed in the requirements
definition phase to the next level of detail, using
the appropriate analysis methodology for the
project (e.g., structured or object-oriented
analysis). When analysis is complete, the team
presents its findings at an SSR.
r
(
TAILORING NOTE
1
On large projects, requirements
analysis begins at the PSRR.
Key members of the develop-
ment team examine the review
materials, participate in the
review itself, and begin
classifying requirements
shortly thereafter.
The development team works closely with the
requirements definition team during the entire
phase. The requirements definition team
participates in walk-throughs, answers questions,
resolves requirements issues, and attends the
SSR. Meanwhile, the project manager plans the
approaches to be used in developing the software
system and in managing the development effort,
obtains and trains the necessary staff, and reviews
the products produced during the phase.
Figure 4-1 is a high-level data flow diagram of the
requirements analysis process.
n
0
NOTE
A typical development team comprises
the project manager, who manages
project resources, monitors progress,
and serves as a technical consultant
the project (or task) leader, who
provides technical direction and daily
supervision
the programmers and application
specialists who perform the technical
work
a quality assurance representative
a project librarian (see METHODS &
TOOLS)
42
Section 4 - Requirements Analysis
NOTE: The methodologies used in the requirements classification and analysis activities (processes 4.1 and 4.2 in
the above DFD) are described under METHODS AND TOOLS below. The requirements analysis report (process 4.3)
is discussed under PRODUCTS, and a separate subsection is devoted to the SSR (process 4.4). The planning activity
(process 4.5) is outlined under MANAGEMENT ACTIVITIES and is described in detail in Section 3 of Reference 1 2.
Figure 4-1. Analyzing Requirements
43
Section 4 - Requirements Analysis
KEY ACTIVITIES
In the requirements analysis phase, activities are divided primarily
among the requirements definition team, the development team, and
software development managers. The key activities that each
performs during the requirements analysis phase are itemized in the
following subsections. Figure 4-2 is a sample timeline showing
how these activities are typically scheduled.
Activities of the Requirements Definition Team
• Resolve ambiguities, discrepancies, and TBDs in the
specifications. Conduct the initial walk-throughs of the
requirements and specifications for the development team and
participate in later walk-throughs. Respond to all developer
questions.
Resolve the requirements issues raised by the development team.
Incorporate approved modifications into the requirements and
specifications document.
• Participate in the SSR.
Activities of the Development Team
• Analyze and classify requirements. Meet
with the requirements definition team to
walk through and clarify each requirement
and specification. Identify requirements and
specifications that are missing, conflicting,
ambiguous, or infeasible. Assign a
classification of mandatory, requires
review, needs clarification, information
only, or TBD to each item in the
requirements and specifications document.
r
(
NOTE
\
See METHODS AND
TOOLS below for more
information about
walk-throughs,
requirements
classifications, and
analysis methodologies.
E
I
Use structured or object-oriented analysis to verify the
specifications. Expand the high-level diagrams in the
requirements and specifications document to a lower level of
detail, and supply missing diagrams so that all specifications are
represented at the same level. Ensure that user interactions and
major data stores (e.g., attitude history files) are completely
specified.
Determine the feasibility of computer capacity and performance
requirements in view of available resources. Establish initial
performance estimates by comparing specified
44
Section 4 - Requirements Analysis
r
(
NOTE
\
The contents of the
requirements analysis
report and the software
development/management
plan are covered under
PRODUCTS below. The
SSR is discussed separately
at the end of this section.
r
f REFERENCE
\
i
See the Manager's
Handbook for Software
Development and the
Approach to Software Cost
Estimation (References 12
and 18, respectively) for
guidance in estimating
project size, costs , and
schedule.
functions/algorithms with those of existing
systems. Use the estimates to model overall
performance (CPU, I/O, etc.) for the
operational scenarios described in the SOC.
Adjust the SOC scenarios to take these results
into account.
Walk through the results of classification and
analysis with the requirements definition team.
Refine the reuse proposal into a realistic plan.
Analyze the software reuse proposal in the SOC
in light of the existing software's current
operational capabilities and any changes to the
requirements baseline.
Identify areas of technical risk. Plan and
conduct prototyping efforts or other appropriate
techniques to minimize these risks.
Prepare the requirements analysis report and
distribute it before the SSR.
Conduct the SSR and resolve all RIDs.
Activities of the Management Team
• Prepare the software development/management plan
(SDMP). Review the histories of related, past projects for
applicable size, cost, and schedule data as well as lessons
learned. Determine what resources are needed, develop a
staffing profile, and estimate project costs. Identify project risks
and plan to minimize them. Document the technical and
management approaches that will be used on the project.
• Staff and train the development team. Bring staff onto the
project as soon as possible following SRR (or, on large
projects, PSRR). Ensure communications among development
team members, managers, and the requirements definition team.
Also make certain that the requirements definition team is
adequately staffed following SRR, so that TBD and changing
requirements can be given prompt and thorough analysis.
• Interact with analysts and customers to facilitate resolution
of requirements issues. Work with team leaders to assess the
45
Section 4 - Requirements Analysis
REQUIREMENTS
DEFINITION
TEAM
SOFTWARE
DEVELOPMENT
TEAM
MANAGEMENT
TEAM
_y
Conduct requirements walk-throughs
Participate in walk-throughs
Answer developer questions
Incorporate changes to requirements
Participate in SSR
_y
Participate in walk-throughs
Submit questions
Classify requirements
Generate DFDs/OO diagrams
Conduct analysis walk-throughs
Identify risks; conduct prototyping efforts; refine operational scenarios
Refine the reuse proposal
Produce the requirements analysis report
-^
Prepare and conduct the SSR
Resolve RIDs
zr
Estimate resources and schedules; staff the development team
2W
Facilitate resolution of requirements issues; review products
Prepare the SDMP
Direct the SSR
_V
Plan the transition to preliminary design
SRR
SSR
TIME
Figure 4-2: Timeline of Key Activities in the Requirements Analysis Phase
feasibility of proposed requirements changes and to estimate their impact on costs and
schedules.
Review the products of the requirements analysis process. Look at requirements
classifications, data-flow or object-oriented diagrams, the data dictionary, the
requirements analysis report, and the SSR hardcopy materials. Schedule the SSR and
ensure participation from the appropriate groups.
Plan an orderly transition to the preliminary design phase. Convey to the
development team members the parts of the software development plan that apply to
preliminary design (e.g., design standards and configuration management procedures)
and instruct them in the specific software engineering approach to use during design.
While the key team members are preparing for SSR, have the remainder of the
development team begin preliminary design activities.
46
Section 4 - Requirements Analysis
METHODS AND TOOLS
The following methods, techniques, and tools are used to support
the activities of the requirements analysis phase:
Requirements walk-throughs
Requirements classifications
Requirements forms
Structured and object-oriented requirements analysis
CASE tools
Prototyping
The project library
Each is discussed below.
Requirements Walk-Throughs
At the beginning of the requirements analysis phase, developers
meet informally with analysts of the requirements definition team to
go through the requirements and specifications. During these initial
walk-throughs, analysts discuss each of the specifications, explain
why certain algorithms were selected over others, and give
developers the opportunity to raise questions and issues.
After developers have analyzed and classified the requirements and
specifications, they conduct walk-throughs of their results for the
requirements definition team. One walk-through should be held for
each major function or object in the system. During these later
walk-throughs, both teams review all problematic specification items
and discuss any needed changes to the requirements and
specifications document.
To ensure that all problem areas and decisions are documented, one
member of the development team should record the minutes of the
walk-through meeting. Developers will need the minutes to fill out
requirements question-and-answer forms for any issues that require
confirmation, further analysis, or other action by the requirements
definition team.
Requirements Classification
When the development team is thoroughly familiar with the
requirements and specifications document, they take each passage
(sentence or paragraph) in the requirements and specifications
document and classify it as either mandatory, requires review, needs
clarification, information only, or TBD.
41
Section 4 - Requirements Analysis
An item is mandatory if it is explicitly defined in project-level
requirements documents such as the SIRD or SORD, or if it has
been derived from analysis of the project-level requirements. If
mandatory items are removed from the specifications, the system
will fail to meet project-level requirements.
If (on the basis of project-level requirements and the system and
operations concept) there is no apparent need for a particular
requirement or specification, then that item requires review (i.e.,
further analysis by the requirements definition team). The item
must be deleted from the specification (by means of a
specification modification) or moved into the mandatory
category before CDR.
An item needs clarification when it is ambiguous, appears
infeasible, or contradicts one or more of the other requirements
or specifications.
An item is labelled as information only
if it contains no requirement or
specification per se. Such an item may
provide background information,
helpful hints for the software developer,
etc.
A requirement or specification item is
TBD if (1) the item contains a statement
such as "the process is TBD at this
time," or (2) information associated
with the item is missing or undefined.
[HINT
19
1
If the requirements and
specifications are available in a
database, enter the classifications
and supporting commentary into
the database online. Otherwise,
summarize each requirement or
specification item, create a list of
the summaries, and use the lists
to assign classifications.
Requirements Forms
During the requirements analysis and subsequent phases, question-
and-answer forms are used to communicate and record requirements
issues and clarifications. Specification modifications are used to
document requirements changes.
The development team uses question-and-answer forms to track
questions submitted to the requirements definition team and to verify
their assumptions about requirements. Managers of the
requirements definition team use the forms to assign personnel and
due dates for their team's response to developers. Responses to
questions submitted on the forms must be in writing.
The question-and-answer form cannot be used to authorize changes
to requirements or specifications. If analysis of the submitted
question-and-
answer forms
48
Section 4 - Requirements Analysis
question or issue reveals that a requirements change is needed,
.„ . members of the requirements definition team draft a specification
speatica ion modification. Proposed specification modifications must be
approved by the managers of both the requirements definition and
the development teams and by the CCB. The requirements
definition team incorporates all approved specification modifications
into the requirements and specifications document.
Analysis Methods and CASE Tools
The methods and tools applicable for requirements analysis are the
same as those recommended for the requirements definition phase in
Section 3. The development team will generally use the same
method as was used by the requirements definition team to take the
analysis down to a level of detail below that provided in the
specifications. This allows the development team to verify the
previous analysis and to fill in any gaps that may exist in the
document. If CASE tools were used in the requirements definition
phase to generate data flow or object diagrams, it is important to use
the same tools in the requirements analysis phase. The value of a
CASE tool as a productivity and communication aid is greatly
reduced if developers must re-enter or reformat the diagrams for a
different tool.
If the requirements definition team has used functional
decomposition for their analysis and the development team needs to
generate an object-oriented design, then extra analysis steps are
required. The development team must diagram the details of the
specification at a low level, then use the diagrams to abstract back up
to higher-level requirements. This allows the team to take a fresh,
object-oriented look at the system architecture and to restructure it as
needed.
Prototyping
During the requirements analysis phase, prototyping activities are
usually conducted to reduce risk. If unfamiliar technology (e.g.,
hardware or new development language features) will be employed
on the project, prototyping allows the development team to assess
the feasibility of the technology early in the life cycle when changes
are less costly to effect. If system performance or reliability is a
major, unresolved issue, the team can prototype critical operations
or algorithms.
On projects where the requirements for the user interface must be
prototyped — either because the interface is critical to system
success or because users are uncertain of their needs — a tool that
49
Section 4 - Requirements Analysis
allows the developer to set up screens and
windows rapidly is often essential. With such
a tool, the developer can give the user the "look
and feel" of a system without extensive
programming and can obtain early feedback.
The tool should be able to generate menus,
multiple screens, and windows and respond to
input. One such tool that has been successfully
used in the SEL is Dan Bricklin's Demo
Program.
r
(
RULE
1
Caution must be exercised to ensure
that any prototyping activity that is
conducted is necessary, has a defined
goal, and is not being used as a means
to circumvent standard development
procedures. See PRODUCTS in
Section 4 for additional guidance on
how to plan a prototyping effort.
Project Library
In each software development project, one team member is assigned
the role of librarian. During a project, the librarian (sometimes
called the software configuration manager) maintains the project
library, which is a repository of all project information. The
librarian also maintains configured software libraries and operates
various software tools in support of project activities.
The librarian establishes the project library during the requirements
analysis phase. In general, the project library contains any written
material used or produced by the development team for the purpose
of recording decisions or communicating information. It includes
such items as the requirements and specifications document,
requirements question-and-answer forms, approved specification
modifications, and the requirements analysis summary report.
Necessary management information, such as the software
development/management plan, is also included.
the
librarian
MEASURES
The following paragraphs describe the measures and evaluation
criteria that managers can use to assess the development process
during the requirements analysis phase.
Objective Measures
The progress and quality of requirements analysis are monitored by
examining several objective measures:
• Staff hours — actual, cumulative hours of staff effort, as a total
and per activity
• Requirements questions and answers — the number of question-
and-answer forms submitted versus the number answered
50
Section 4 - Requirements Analysis
Table 4-1. Objective Measures Collected During the Requirements Analysis Phase
MEASURE
Staff hours (total and
by activity)
Requirements (changes
and additions to
baseline)
Requirements (TBD
specifications)
Requirements
(Questions/answers)
Estimates of total
SLOC, total effort,
schedule, and reuse
SOURCE
Developers and
managers
(via Personnel
Resources Forms
(PRFs))
Managers
(via Development
Status Forms (DSFs))
Managers
Managers (via DSFs)
Managers (via Project
Estimates Forms
(PEFs))
FREQUENCY
{COLLECT/ANALYZE)
Weekly/monthly
Biweekly/biweekly
Biweekly/biweekly
Biweekly/biweekly
Monthly/monthly
DATA COU-ECTION
CONTINUED
BEGUN
/
NOTE
\
' The SEL uni 3 hardcopy forms to
collect metrics during the requirements
analysis phase. The Personnel
Resources Form is used by the
development team to record weekly
effort hours. The Project Estimates
Form is used by managers to record
their monthly size and effort estimates.
The Development Status Form is used
to record the number of requirements
changes, and number of requirements
questions vs. answers. See Reference
19 for detailed information about SEL
data collection forms and procedures.
• TBD requirements — the number of
requirements classified as TBD versus the
total number of requirements
• Requirements changes — the total
cumulative number of requirements for
which specification modifications have been
approved
• Estimates of system size, reuse, effort, and
schedule — the total estimated number of
lines of code in the system; the estimated
number of new, modified, and reused
(verbatim) lines of code; the total estimated
staff hours needed to develop the system;
and estimated dates for the start and end of
each phase of the life cycle.
For each of these measures, Table 4-1 shows who provides the
data, the frequency with which the data are collected and analyzed,
and whether data collection is continued from the requirements
definition phase or newly initiated.
51
Section 4 - Requirements Analysis
Evaluation Criteria
Staff hours are usually graphed against a profile of estimated staff
effort that is generated by the software development manager for the
SDMP (Figure 4-5). This early comparison of planned versus
actual staffing is used to evaluate the viability of the plan.
In the flight dynamics environment, hours that are lower than
expected are a serious danger signal — even if schedules are being
met — because they indicate the development team is understaffed.
If too few developers perform requirements analysis, the team will
not gain the depth of understanding necessary to surface
requirements problems. These problems will show up later in the
life cycle when they are far more costly to rectify.
A growing gap between the number of questions submitted and the
number of responses received or a large number of requirements
changes may indicate problems with the clarity, correctness, or
completeness of the requirements as presented in the requirements
and specifications document. Data from similar past projects should
be used to assess the meaning of the relative sizes of these numbers.
Because unresolved TBD requirements can necessitate severe design
changes later in the project, the number of TBD requirements is the
most important measure to be examined during this phase.
Categorize and track TBD requirements according to their severity.
TBD requirements concerning external interfaces are the most
critical, especially if they involve system input. TBDs affecting
internal algorithms are generally not so serious.
A TBD requirement is considered severe if it could affect the
functional design of one or more subsystems or of the high-level
data structures needed to support the data processing algorithms.
Preliminary design should not proceed until all severe TBD
requirements have been resolved. A TBD requirement is considered
nominal if it affects a portion of a subsystem involving more than
one component. Preliminary design can proceed unless large
numbers of nominal TBD requirements exist in one functional area.
An incidental TBD requirement is one that affects only the internals
of one unit. Incidental TBD requirements
should be resolved by the end of detailed
design.
staff hours
requirements
questions
and changes
TBD
requirements
For each TBD requirement, estimate the effect
on system size, required effort, cost, and
schedule. Often the information necessary to
resolve a TBD requirement is not available
until later, and design must begin to meet fixed
deadlines. These estimates will help determine
the uncertainty of the development schedule.
MORE MEASURES
\
Consider tracking these
additional measures of
progress during the require-
ments analysis phase:
• number of requirements
classified vs. total
requirements
• number of requirements
diagrams completed vs.
estimated total diagrams
52
Section 4 - Requirements Analysis
Explanation: The original staffing plan was based on an underestimate of the system size. Toward the end of the design phase, 40% more
effort was required on a regular basis. This was one of many Indicators that the system had grown, and the project was replanned accordingly.
However effort continued to grow when the second plan called for it to level off and decline. When it was clear that Mil more staff would be
required to maintain progress, an audit was conducted. The audit revealed that the project was plagued with an unusually large number of
unresolved TBDs and requirements changes that were causing an excessive amount of rework and that - as pan of the corrective action -
another replan was necessary.
Figure 4-3. Effort Data Example — ERBS AGSS
system size
estimates
NOTE
The growth of system size estimates is another key indicator of
project stability. Estimating the final size of the system is the first
step in the procedure for determining costs, schedules, and staffing
levels (Section 3 of Reference 12). Make the initial estimate by
comparing current requirements with information from past projects
within the application environment. Update and plot the estimate
each month throughout the life cycle.
\
In comparing actual data (e.g.,
staff hours) versus estimates,
the amount of deviation can
show the degree that the
development process or product is
varying from what was expected, or it
can indicate that the original plan was in
error. If the plan was in error, then
updated planning data (i.e., estimates)
must be produced.
As the project matures, the degree of change in
the estimates should stabilize. If requirements
growth pushes the system size estimate beyond
expected limits, it may be necessary to
implement stricter change control procedures or
to obtain additional funding and revise project
plans. See Section 6 of Reference 12 for
additional guidance in evaluating size estimates.
53
Section 4 - Requirements Analysis
PRODUCTS
The following key products are produced during this phase:
• The requirements analysis report
• The software development/management plan
• Updated requirements and specifications document
• Prototyping plans (as needed)
These products are addressed in the paragraphs that follow.
The Requirements Analysis Report
The requirements analysis report establishes a basis for beginning
preliminary design and is, therefore, a key product of the
requirements analysis phase. This report includes the following:
• The updated reuse plan (The original reuse proposal was
developed during the requirements definition phase and recorded
in the systems and operations concept document. It is adjusted
to reflect approved requirements changes and the results of
analysis of the reusable software's current capabilities.)
• Updates to operational scenarios (in view of prototyping results,
performance analyses, requirements changes, and functional
reallocations)
• The DFDs or object-oriented diagrams generated to analyze and
complete the specifications
• A summary of the results of requirements analysis, highlighting
problematic and TBD requirements, system constraints, and
development assumptions
• An analysis of the technical risks of the project, as well as cost
and schedule risks resulting from TBD requirements or other
factors
Figure 4-4 presents the format and contents of the requirements
analysis report.
The Software Development/Management Plan
The SDMP provides a detailed exposition of the specific technical
and management approaches to be used on the project. In the
SDMP, the development team manager discusses how the
recommended approach will be tailored for the current project and
provides the resource and schedule estimates that will serve as a
baseline for comparisons with actual progress data.
54
Section 4 - Requirements Analysis
REQUIREMENTS ANALYSIS REPORT
This report is prepared by the development team at the conclusion of the requirements analysis
phase. It summarizes the results of requirements analysis and establishes a basis for beginning
preliminary design. The suggested contents are as follows:
1. Introduction — purpose and background of the project, overall system concepts, and
document overview
2. Reuse proposal — key reuse candidates and overall architectural concept for the system
3. Operations overview — updates to system and operations concepts resulting from work
performed during the requirements analysis phase
a. Updated operations scenarios
b. Operational modes, including volume and frequency of data to be processed in each
mode, order, and type of operations, etc.
c. Updated descriptions of input, output, and messages
4. Specification analysis .
a. Summary of classifications (mandatory, requires review, information only, needs
clarification, or TBD) assigned to requirements and specifications
b. Problematic specifications — identification and discussion of conflicting, ambiguous,
infeasible, untestable, and TBD requirements and specifications
c. Unresolved requirements/operations issues, including the dates by which resolutions
are needed
d. Analysis of mathematical algorithms
5. System constraints
a. Hardware availability — execution, storage, peripherals
b. Operating system limitations
c. Support software limitations
6. Performance estimates and models
7. Development assumptions
a Risks, to both costs and schedules. (These should include risks related to TBD or changing
requirements, as well as technical risks.)
9. Prototyping efforts needed to resolve technical risks, including the goals and completion
criteria for each prototyping effort
10. Data flow or object-oriented diagrams — results of all structured or object-oriented analysis
of the requirements performed during the requirements analysis phase
11. Data dictionary — for the updated processes, data flows, and objects shown in the
diagrams
Figure 4-4. Requirements Analysis Report Contents
The manager prepares the SDMP during the requirements analysis phase and keeps it up to
date throughout the development life cycle. Because of the primary importance of this
plan, it is described in detail in the Manager's Handbook for Software Development
(Reference 12).
55
Section 4 - Requirements Analysis
The SDMP includes a software development approach; a description of risks and risk
mitigation; an initial estimate of the system's size; and estimates of the schedule, staffing,
resources, and cost of the project. Figure 4-5 outlines the contents of the SDMP.
SOFTWARE DEVELOPMENT/MANAGEMENT PLAN
In some sections of the plan, material (shown in italics) is to be regularly added during the life of
the project. Other sections should be revised and reissued if circumstances require significant
changes in approach.
1. INTRODUCTION
1.1 Purpose — brief statement of the project's purpose.
1.2 Background — brief description that shows where the software products produced
by the project fit into the overall system.
1.3 Organization and Responsibilities
1 .3.1 Project Personnel — explanation and diagram of how the development team
will organize activities and personnel to carry out the project: types and
numbers of personnel assigned, reporting relationships, and team members'
authorities and responsibilities (see Reference 12 for guidelines on team
composition).
1.3.2 Interfacing Groups — list of interfacing groups, points of contact, and
group responsibilities.
2. STATEMENT OF PROBLEM — brief elaboration of the key requirements, the steps
(numbered) to be taken to accomplish the project, and the relation (if any) to other projects.
3. TECHNICAL APPROACH
3.1 Reuse Strategy — high-level description of the current plan for reusing software from
• existing systems.
32 Assumptions and Constraints —that govern the manner in which the work will be
performed.
33 Anticipated and Unresolved Problems —that may affect the work and the
expected effect on each phase.
34 Development Environment — development computer and programming languages.
35 Activities, Tools, and Products — for each phase, a matrix showing (a) the major
activities to be performed, (b) the development methodologies and tools to be
applied, and (c) the products of the phase. Includes discussion of any unique
approaches or activities.
3£ Build Strategy — which portions of the system will be implemented in which builds
and the rationale for this. Determined during the preliminary design phase. Updated
at the end of detailed design and after each build.
Figure 4-5. SDMP Contents (1 of 2)
s«
56
Section 4 - Requirements Analysis
MANAGEMENT APPROACH
4.1
42
43
44
45
Assumptions and Constraints — that affect the management approach,
including project priorities.
Resource Requirements — tabular lists of estimated levels of resources required,
including estimates of system size (new and reused SLOC), staff effort (managerial,
programmer, and support) by phase, training requirements, and computer resources.
Includes estimation methods or rationale used. Updated estimates are added at the
end of each phase.
Milestones and Schedules — list of work to be done, who will do it, and when it
will be completed. Includes development life cycle (phase start and finish dates);
build/release dates; delivery dates of required external interfaces; schedule for
integration of externally developed software and hardware; list of data, information,
documents, software, hardware, and support to be supplied by external sources and
delivery dates; list of data, information, documents, software, and support to be
delivered to the customer and delivery dates; and schedule for reviews (internal
and external). Updated schedules are added at the end of each phase.
Measures — a table showing, by phase, which measures will be collected to capture
project data for historical analysis and which will be used by management to
monitor progress and product quality (see Reference 12). If standard measures will
be collected, references to the relevant standards and procedures will suffice.
Describes any measures or data collection methods unique to the project.
Risk Management — statements of each technical and managerial risk or
concern and how it is to be mitigated. Updated at the end of each phase to
incorporate any new concerns.
5. PRODUCT ASSURANCE
5.1 Assumptions and Constraints — that affect the type and degree of quality
control and configuration management to be used.
52 Quality Assurance — table of the methods and standards that will be used to
ensure the quality of the development process and products (by phase). Where
these do not deviate from published methods and standards, the table should
reference the appropriate documentation. Methods of ensuring or promoting quality
that are innovative or unique to the project are described explicitly. Identifies the
person(s) responsible for quality assurance on the project, and defines his/her
functions and products by phase.
53 Configuration Management — table showing products controlled, as well as
tools and procedures used to ensure the integrity of the system configuration
(when is the system under control, how are changes requested, who makes the
changes, etc.). Unique procedures are discussed in detail. If standard configuration
management practices are to be applied, references to the appropriate documents
are sufficient. Identifies the person responsible for configuration management and
describes this role. Updated before the beginning of each new phase with detailed
configuration management procedures for the phase, including naming conventions,
directory designations, reuse libraries, etc.
a APPENDIX: PROTOTYPING PLANS — collected plans for each prototyping effort to be
conducted on the project.
7. PLAN UPDATE HISTORY — lead sheets from each update of the SDMP, indicating
which sections were updated and when the update was made.
Figure 4-5. SDMP Contents (2 of 2)
57
Section 4 - Requirements Analysis
Updated Requirements and Specifications
During this phase, the requirements definition team prepares updates
to the requirements and specifications document on the basis of
approved specification modifications. Additional specification
modifications may be approved as a result of discussion at the SSR
or the RID process. The requirements definition team must ensure
that the updated requirements and specifications document is
republished shortly after the SSR, so that it will be available to the
developers as they generate the software design.
Prototyping Plans
Managing a prototype effort requires special vigilance. Progress is
often difficult to predict and measure. A prototyping effort may
continue indefinitely if no criteria are established for evaluating the
prototype and judging completion. Writing a plan for each
prototyping activity, no matter how brief, is vital to establishing
control.
The length of the plan and the time to prepare it should be
proportional to the size and scope of the prototyping effort. A one-
page plan may be all that is required for small prototyping efforts. A
brief plan need not be published separately but may, instead, be
incorporated into the SDMP (Figure 4-5).
The following items should be included in the plan:
• Objective of the prototype — its purpose and use
• Statement of the work to be done and the products to be
generated
• Completion criteria
• Assessment methods — who will evaluate the prototype and
how it will be evaluated
• Technical approach
• Resources required — effort and size estimates, staff, hardware,
software, etc.
• Schedule
The SDMP should contain summaries of the detailed prototyping
plans. Each summary should describe the general approach, discuss
the items to be prototyped, include effort estimates, provide a
schedule, and discuss the rationale for the schedule.
58
Section 4 - Requirements Analysis
SOFTWARE SPECIFICATION REVIEW
At the conclusion of requirements analysis, the development team
holds an SSR. This is a high-level review conducted for project
management and the end users of the system. The SSR format,
schedule, and participants are itemized in Figure 4-6.
SSR FORMAT
Presenters — software development team
Participants
■ Requirements definition team
• Customer interfaces for both the requirements definition
and software development teams
• User representatives
• Representatives of interfacing systems
• Quality assurance representatives for both teams
• System capacity/performance analysts
•CCB
Schedule — after requirements analysis is complete and before the
preliminary design phase is begun
Agenda — selective presentation of the results of requirements
analysis, directed primarily toward project management and the
users of the system
Materials Distribution
• The requirements analysis report and software development/
management plan are distributed 1 to 2 weeks before SSR.
• Hardcopy material is distributed a minimum of 3 days before SSR.
Figure 4-6. SSR Format
SSR Hardcopy Material
The hardcopy materials for the review will contain some of the same
information found in the requirements analysis report. Keep in
mind that there is some flexibility in selecting the most appropriate
information to include in the presentation. The contents suggested in
Figure 4-7 are intended as a guideline.
59
Section 4 - Requirements Analysis
HARDCOPY MATERIAL FOR THE SSR
1. Agenda — outline of review material
2. Introduction — background of the project and purpose of system
3L Analysis overview — analysis approach, degree of innovation required in analysis, special
studies, and results
4. Revisions since SRR — changes to system and operations concepts, requirements, and
specifications effected following the SRR
5. Reusable software summary
a. Key reuse candidates — identification of existing software components that satisfy
specific system specifications exactly or that will satisfy the specifications
after modification
b. Overall architectural concept for the system
c. Matrix of requirements to be fulfilled by reused components
& Requirements classification summary
a. List of requirements and specifications with their assigned classifications
(mandatory, requires review, needs clarification, information only, or TBD)
b. Problematic specifications — identification and discussion of conflicting, ambiguous,
infeasible, and untestable requirements and specifications
c. Unresolved requirements/operations issues, including the dates by which resolutions to
TBDs are needed (NOTE: This is a key element of the SSR.)
7. Functional or object-oriented specifications
a. Object diagrams or high-level data flow diagrams showing input, transforming
processes, and output
b. Data set definitions for external interfaces to the system
a Performance model — key estimates and results of modeling system performance
9. Development considerations
a. System constraints — hardware availability, operating system limitations, and support
software limitations
b. Utility, support, and test programs — list of auxiliary software required to support
development (e.g., data simulators, special test programs, software tools, etc.)
c. Testing requirements
d. Development assumptions
10. Risks, both to costs and schedules — includes how risks are identified, their potential
impact, and how they will be managed. Covers risks related to TBD or changing
requirements as well as technical risks
11. Summary of planned prototyping efforts needed to resolve technical risks, including
the goals and schedule for each effort and a summary of any prototyping conducted to date
12. Key contacts — leaders of technical teams, application specialists, and other key project
members
13. Milestones and schedules — includes size estimates, development life cycle (phase start
and finish dates), schedule for reviews (internal and external), build/release requirements,
delivery dates of required external interfaces, schedule for integration of externally
developed software and hardware
Figure 4-7. SSR Hardcopy Material
60
Section 4 - Requirements Analysis
EXIT CRITERIA
To determine whether the development team is ready to proceed with
preliminary design, consider the following questions:
• Have all TBD requirements been identified and their impacts
assessed?
• Are performance requirements (e.g., timing, memory, and
accuracy) clear? Are the requirements feasible, given the
environmental constraints? Are sufficient computer resources
available?
• Have the key exit criteria for the phase been met? That is, has
the requirements analysis report been distributed, has the SSR
been successfully completed, and have all SSR RIDs been
answered?
When these criteria have been met, the requirements analysis phase
is complete.
61
On
W
(D
30
CD
lis
CD
3
(D
3
r*
(/>
>
a
m
V)
ill iiiiii II
Mil I ml I
jm ««
Section 5 - Preliminary Design
CYCLE
PHASES
REQUIREMENTS
DEFINITION
REQUIRE-
MENTS
ANALYSIS
PRELIMI-
NARY
DESIGN
msp
IMPLEMENTATION
?M
*m«P
SECTION 5
THE PREUMINARY DESIGN PHASE
PHASE HIGHLIGHTS
c
^i^;g5ijs^sgs*^
PRODUCTS
• Preliminary design report
$&mistm^wm#3mBmi&mwmsi$^&m;m8!Sz
MEASURES
• Units identified/designed
• Requirements Q&As, TBDs, and changes
• Staff hours
• Estimates of system size, effort,
schedule, and reuse
jgms8smwxwz»»}w,M^^>^3w>mww?»}^)m<m&s&
METHODS AND TOOLS
Functional decomposition and
object-oriented design **
Prologs and PDL
Software engineering notebooks
Design walk-throughs***
Design inspections***
Reuse verification
Analysis methods
EXIT CRITERIA
Preliminary design report generated
PDR completed
PDR RIDs answered
ima^gffliaMigMasmMiiiMSS
KEY ACTIVITIES
| Development Team*
• Prepare preliminary design diagrams
• Prepare prologs and PDL
for high-level functions/objects
• Document the design in the preliminary
design report
•Conduct the PDR
'xTO'xgwH'A'a^jym-xWxg:':'
Management Team
• Reassess schedules, staffing, training, and
other resources
• Plan, coordinate, and control requirements
changes
• Control the quality of the preliminary
design process and products
• Plan the transition to detailed design
Requirements Definition Team
• Resolve outstanding requirements issues
• Participate in design walk-throughs and
PDR
I
m»M»:i.m»:
warnm*
With the Cleanroom methodology:
* All test activities are conducted by a separate test team established at the beginning of
preliminary design. During this phase, the test team develops a usage profile for statistical
testing, derives a list of functions to be tested, and drafts a preliminary system test plan.
Box structures (References 20,21) are used to develop the design and examine alternatives.
•••Cleanroom relies upon design walk-throughs for understanding and upon inspections for
ensuring quality products. Both methods have been used extensively on SEL-monitored projects
and are key elements of the SEL's recommended approach.
PRECEDING P3GE rWNK not pimQ
63
Section 5 - Preliminary Design
OVERVIEW
The purpose of the preliminary design phase is to define the high-
level software architecture that will best satisfy the requirements and
specifications for the system.
During preliminary design, the development team uses the updated
requirements and specifications document to develop alternative
designs and to select an optimum approach. The team partitions the
system into major subsystems, specifies all system and subsystem
interfaces, and documents the design using structure charts or
annotated design diagrams. Developers use an iterative design
process that proceeds somewhat differently, depending on whether a
functional decomposition or object-oriented design approach is
chosen.
Early in this phase, developers examine the software components
that are candidates for reuse and verify their compatibility with
overall system requirements and the emerging design. Prototyping
activities begun during the requirements analysis phase may
continue and new prototyping efforts may be initiated. Developers
also define error-handling and recovery strategies, determine user
inputs and displays, and update operational scenarios.
During this phase, the development team continues to work closely
with analysts of the requirements definition team to resolve
requirements ambiguities and TBDs. To ensure that the emerging
design meets the system's requirements, developers send formal
requirements questions to analysts for clarification, conduct walk-
throughs, and subject all design products to peer inspection.
The preliminary design phase culminates in
the preliminary design review (PDR), during
which developers present the rationale for
selecting the high-level system design. The
preliminary design report documents the
initial system design and is distributed for
review prior to the PDR.
Figure 5-1 presents a high-level data flow
diagram of the preliminary design process.
f TAILORING NOTE ^
On projects with a high degree
of reuse, the preliminary and
detailed design phases may be
combined. In that case, both
preliminary and detailed design
activities are conducted, but
developers hold only a CDR and
produce only the detailed design
report.
64
Section 5 - Preliminary Design
REQUIREMENTS ANALYSIS
REPORT
UPDATED REQUIREMENTS AND SPECIFICATIONS
DOCUMENT
R HARDCOPY MATERIALS
NOTE: The processes labelled 5.1, 5.2, and 5.3 are described in the KEY ACTIVITIES subsection. Prologs and POL (5.3) and
design methodologies (5.2) are also discussed under METHODS AND TOOLS. The PDR is described under REVIEWS,
and the preliminary design document is covered in PRODUCTS.
Figure 5-1. Developing the Preliminary Design
65
Section 5 - Preliminary Design
KEY ACTIVITIES
The following are the key activities of the development team, the
management team, and the requirements definition team during the
preliminary design phase. The development team performs the
principal activities of the phase. The requirements definition team
concentrates on resolving outstanding TBD requirements and
providing support to the development team. The relationships
among the major activities of these groups are shown in Figure 5-2.
Activities of the Development Team
• Prepare preliminary design diagrams. Using functional
decomposition or object-oriented techniques, expand the
preliminary software architecture that was proposed in earlier
phases. Idealize the expanded architecture to minimize features
that could make the software difficult to implement, test,
maintain, or reuse.
Evaluate design options. Weigh choices according to system
priorities (e.g., optimized performance, ease of use, reuse
considerations, reliability, or maintainability). Use prototyping
and performance modeling to test alternatives, especially in risk
areas.
Examine the software components that
are candidates for reuse. If system
response requirements are especially
stringent, model the performance of the
reusable components. Update the reuse
plan to reflect the results of these reuse
verification activities.
Generate high-level diagrams of the
selected system design and walk the
analysts of the requirements definition
team through them. Use the high-level
design diagrams to explain the system
process flow from the analyst's
perspective. Focus on system and
subsystem interfaces. Explain
refinements to the operations scenarios
arising from analysis activities and
include preliminary versions of user
screen and report formats in the walk-
through materials.
r
(
TAILORING NOTE
\
1
Design diagrams, prologs,
and PDL are required for all
systems, regardless of the
design methodology applied.
METHODS AND TOOLS
discusses ways these items
are represented.
r
0
NOTE
\
Reuse verification encompasses
designs, documentation, and
test plans and data as well as
code. See METHODS AND
TOOLS for more details.
66
Section 5 - Preliminary Design
REQUIREMENTS
DEFINITION
TEAM
SOFTWARE
DEVELOPMENT
TEAM
MANAGEMENT
TEAM
Answer developer questions; resolve requirements issues, TBDs
Participate in design wa I k-th roughs
Participate in PDR
Develop idealized design
Evaluate design alternatives; prototype risk areas
Conduct reuse trade-off analyses
Prepare preliminary design diagrams
Refine operational scenarios
. 3?
Conduct design walk-throughs
Prepare prologs, PDL
Prepare preliminary design report
Conduct design inspections
Prepare and conduct PDR
Resolve PDR RIDs
_37
Record project history data; reassess schedules, staffing, resources
Plan and control requirements changes; control quality
Update SDMP estimates
Plan the transition to detailed design
Direct the PDR
^
SSR
PDR
■TIME"
Figure 5-2. Preliminary Design Phase Timeline
67
Section 5 - Preliminary Design
Prepare prologs and PDL for the high-level functions/objects.
For FORTRAN systems, prepare prologs and PDL to one level
below the subsystem drivers. For Ada systems, prepare and
compile specifications for the principal objects in the system and
construct sufficient PDL to show the dependencies among
packages and subprograms. (See Figure 5-4.)
Provide completed design diagrams, unit
prologs/package specifications, and PDL
to other members of the development team
for independent inspection and
certification.
• Document the selected design in the
preliminary design report. Include the
reuse plan, alternative design decisions,
and external interfaces.
• Conduct the PDR and resolve RIDs.
Record design changes for use in the
detailed design phase, but do not update
the preliminary design report.
Activities of the Management Team
During preliminary design, the manager's
focus changes from planning to control. The
following are the major management activities
of this phase:
• Reassess schedules, staffing, training,
and other resources. Begin the software
development history by recording lessons
learned and project statistics from the
requirements analysis phase. Include
percentages of project effort and schedule
consumed, growth of system size
estimates, and team composition.
r
(
NOTE
\
Contents of the preliminary
design report and PDR
materials are provided under
the PRODUCTS and REVIEW
headings, respectively, in this
section. Inspection and
certification procedures are
covered under METHODS
AND TOOLS.
r
(
NOTE
\
Material for the software
development history (SDH) is
collected by the management
team throughout the life of the
project. See Section 9 for an
outline of SDH contents.
Ensure that the development team contains
a mix of software engineers and personnel experienced in the
application area. If the project is large, partition the development
team into groups, usually by subsystem, and appoint group
leaders. Adjust staffing levels to compensate for changes in
requirements and staff attrition, and ensure the team obtains the
training it needs to meet specific project demands.
68
Section 5 - Preliminary Design
• Plan, coordinate, and control requirements changes. Interface
with analysts and the customer to facilitate resolution of
requirements issues and TBDs. Monitor the number and
severity of requirements questions submitted to analysts and the
timeliness of responses. Ensure that analysts and the customer
know the dates by which TBDs need to be resolved and
understand the impact of changing or undetermined requirements
items.
Assess the technical impact and cost of each specification
modification. Constrain modifications that necessitate extensive
rework and non-critical enhancements.
• Control the quality of the preliminary design process and its
products during day-to-day management activities. Ensure that
design walk-throughs, inspections, and reviews are scheduled
and conducted. Attend walk-throughs and, optionally,
inspections and oversee the reporting, tracking, and resolution
of the design issues that arise. Make certain that all requisite
software documentation is generated and review the preliminary
design document. Ensure that the team adheres to project
standards and configuration management procedures.
• Plan an orderly transition to the detailed design phase.
Consider the impacts of TBDs, specification modifications, and
schedule or team adjustments. Revise project estimates of
effort, duration, and size and update corresponding sections of
the SDMP. Develop the project build strategy and prepare a
preliminary build plan reflecting prototyping results, project
risks, and remaining TBDs.
Increase team size if necessary to begin detailed design and
address the training needs of additional personnel. Oversee the
establishment of online libraries to store unit prologs, PDL, and
reused code. While project and group leaders prepare for PDR,
start the rest of the team on detailed design activities.
Control the PDR and ensure that all exit criteria have been met
before declaring the phase complete.
Activities of the Requirements Definition Team
During the preliminary design phase, the requirements definition
team provides support to software developers through the following
activities:
69
Section 5 - Preliminary Design
Continue to resolve requirements issues and TBDs. Clarify
ambiguous, conflicting, or incomplete requirements. Provide
prompt, written replies to developers' requirements questions
and discuss these responses with developers. Respond to
changes in high-level system requirements, evaluate the impact
of each change, and prepare specification modifications
accordingly.
Participate in design walk-throughs and the PDR.
Thoroughly analyze the proposed design. Work with
developers to refine the operational scenarios and preliminary
user interface. Follow up with developers to address issues
raised during the walk-throughs.
Review the preliminary design report and all supporting
hardcopy materials before PDR. Pose questions and provide
critiques of the initial, high-level system design during the
review meeting, and use RIDs to document serious
discrepancies.
METHODS AND TOOLS
The primary methods and tools used during the preliminary design
phase are
• Functional decomposition and object-oriented design
• Prologs and PDL
• Software engineering notebooks (SENs)
• Design walk-throughs
• Design inspections
• Reuse verification
• Analysis methods: prototyping, performance modeling, and
code analysis
Functional Decomposition and Object-
Oriented Design
Design technologies are methods by which
software developers define the major
components of a software system, describe
the interrelationships among components, and
create a foundation for implementation.
Design diagrams, structure charts, and
documentation support these methods.
Through these tools, developers demonstrate
that a chosen design approach incorporates
r
0
NOTE
\
During the design and implemen-
tation phases, the software
development and requirements
definition teams continue to use
question-and-answer forms and
specification modifications to record
and resolve requirements issues.
See METHODS AND TOOLS,
Section 4, for more details.
70
Section 5 - Preliminary Design
r
f REFERENCE
( REFERENCE
DD
A thorough discussion of
object-orianted analysis
and design is provided in
References 11, 16, and 17.
Structured design
principles
(Reference 13)
form the basis of
the functional
decomposition
method used in
the SEL.
each capability and interface specified
in the requirements and specifications
document. The two principal design
technologies used on SEL-monitored
projects are functional decomposition
and object-oriented design (OOD).
When using afunctional decomposition
design method, developers identify the
major functions of a system and
successively refine them into smaller
and smaller functionally oriented
components. High levels in the design
define the algorithmic abstraction (the
"what" of the process), and the lower
levels provide primitive operations that
implement the higher level actions.
In the flight dynamics environment, functional decomposition is
normally used for the development of FORTRAN systems. When
using this design approach, functional baseline diagrams (tree
charts) are generated during preliminary design for all components
to two levels below the subsystem drivers (as shown in Figure 5-3).
The remaining design diagrams (levels 3 to N) are completed during
detailed design. Separate structure charts may augment the
diagrams; alternatively, interface information may be added directly
to the tree charts.
r
f REFERENCE
\
DQ
Cohesion and coupling,
indicators of software
system strength,
reliability, and
maintainability, are
discussed in Reference 13.
The SEL also recommends that functionally
oriented designs employ the principles of
information hiding, data abstraction, loose
coupling, and cohesion. Components below the
heavy line in the functional decomposition
hierarchy of Figure 5-3 denote low-level routines
or utilities whose details are deferred to the detailed
design phase. However, developers must still
understand the total system architecture to produce
a correct preliminary design.
When using an object-oriented approach, designers
identify the abstract objects and their attributes that
model the real-world system, define operations on
those objects, and establish the interfaces between
them. By focusing primarily on the objects (the
"things" of the system) rather than on the actions
that affect those objects, object-oriented techniques
71
Section 5 - Preliminary Design
f
tf
MAIN
EXECUTIVE
SYSTEM
LEVEL
SUBSYSTEM
LEVEL
SUBSYSTEM
LEVEL 1
SUBSYSTEM
LEVEL 2
(LEVELTBETowTTH!sTlNt"AHENar"
ADDRESSED UNTIL DETAILED DESIGN)
SUBSYSTEM
LEVEL 3
PRELIMINARY DESIGN
DETAILED DESIGN
SUBSYSTEM
LEVEL N
Figure 5-3. Extent of the Design Produced for FORTRAN Systems During the
Preliminary and Detailed Design Phases
allow designers to map their solutions more directly to the problem.
In the flight dynamics environment, Ada is typically the language involved when OOD
techniques are chosen. In the preliminary design of Ada systems, all packages and
subprograms that address elements of the problem domain are identified. This includes all
high-level objects necessary to implement the system capabilities, the functions and
procedures affecting these objects, externally visible data, and all interfaces and
dependencies.
72
Section 5 - Preliminary Design
Developers use object-oriented, stepwise refinement until all subsystems, all packages, and
all visible subprograms within those packages have been identified. Design of package
bodies (the hidden elements shaded in Figure 5-4) is reserved until the detailed design
phase. A generalized preliminary design diagram appropriate for an Ada system is shown
in Figure 5-4.
PACKAGE
r ■
GENERIC
| PACKAGE
IMWKtiiiiJfflMmSffli
PACKAGE
AU^UimM
PACKAGE
PACKAGE
wwimimmm
PACKAGE
PACKAGE
/
NOTE: The shaded elements of
this figure represent hidden
portions that are not specified
until the detailed design phase.
\
/
\
SUB-
PROGRAM
/
\
PACKAGE
VISIBLE
PART
SPECIFICATION
.HIDDEN
PART
Figure 5-4. Level of Detail Produced for Ada Systems During Preliminary Design
73
Section 5 - Preliminary Design
Prologs and PDL
Comparable to the blueprint in hardware
systems, prologs and PDL communicate the
concept of the design to the level of detail
necessary for implementation. The prolog
provides a textual explanation of the unit's
purpose and variables; PDL provides a formal,
algorithmic specification for the unit. By using
prologs and PDL, the developer is able to
communicate the exact intent of the design to
reviewers and coders..
The SEL views the use of prologs and PDL
during design as beneficial and cost-effective.
Regardless of the design methodology chosen,
developers are required to generate unit prologs
and high-level PDL (consisting of such items as
call dependencies, major logic branches, and
error-handling strategies) to complete the
preliminary design.
r
(
REFERENCE
\
M
SEL conventions for
prologs and PDL are found
in References 22 (Ada
conventions) and 23
(FORTRAN conventions).
TAILORING NOTE
\
For large Ada systems with broad,
flat designs, creating PDL for
externally visible elements of all
packages and all visible
subprograms entails extensive
effort. When this situation exists,
software managers should adjust
effort and schedule allocations to
allow sufficient time to complete
this work in preliminary design.
For FORTRAN systems, prologs and PDL are produced to one
level below the subsystem drivers. For object-oriented systems,
package specifications (which serve as prologs in Ada systems) and
high-level PDL are generated for all program elements depicted in
the design diagrams (see Figure 5-4). To identify interface errors,
Ada PDL is always compiled; developers use templates and a
language-sensitive editor (LSE) to standardize PDL structure.
Software Engineering Notebooks
A software engineering notebook (SEN) is a workbook (i.e., a file
folder or special notebook) that facilitates quality assurance and
configuration management by consolidating printed information
pertinent to a software component. This information becomes more
detailed as the life cycle progresses. When printed documentation is
combined with online source files in later phases, the SEN provides
a baseline history of an element's evolution through the development
process.
During preliminary design, developers initiate SENs at a subsystem
or logical function level. Into these SENs they collect notes
documenting design decisions, design diagrams, structure charts,
and signed design inspection checklists for the subsystem or
function. SENs are usually maintained by developers until after unit
testing, when they are turned over to the project librarian.
74
Section 5 - Preliminary Design
Design Walk-Throughs
Developers conduct design walk-throughs to ensure that both the
requirements definition and development teams understand the
system design as it takes shape. Developers distribute materials
prior to the walk-through to participants, who include other
developers, analysts, user representatives, representatives of
systems that will interface with the software under development, and
managers. During the meeting, developers carefully explain how
operational aspects of the system (processing sequences and
interfaces, screen formats, and user inputs) are reflected in the
emerging design. Participants comment on how completely and
accurately developers have interpreted the system requirements. A
recording secretary notes discrepancies, errors, and inconsistencies
and records action items. If significant issues remain at the end of
the walk-through, a follow-up session may be scheduled.
The initial walk-through typically presents the overall, system level
approach and is later followed by walk-throughs of subsystems and
their major parts. When a project is large and the development team
has been partitioned into groups, it is important that the group leader
of any subsystem that interfaces with the subsystem being presented
attend the session.
rr
f
NOTE
\
Design inspections are conducted during
both the preliminary and detailed design
phases because different units are
designed in each phase, ff a unit design
was inspected and certified during the
preliminary design phase, it is not re-
inspected during the detailed design
phase unless it has been revised. See
METHODS AND TOOLS in Section 6 for a
detailed description of design inspection
procedures.
Design Inspections
Whereas design walk-throughs focus on
explaining operational aspects of the system
design, design inspections are independent, in-
depth, technical reviews of the design
diagrams, prologs, and PDL that are
performed by software team peers.
Inspections are held as logically related parts
of the system design become clear and
complete; they are scheduled when unit
prologs and PDL have been generated to the
required level. Developers distribute these
materials for study by the inspection team prior
to holding a working meeting.
An inspection team consists of three or more members of the
development team who are versed in the project's standards,
development language, and system requirements. One member of
the team acts as the moderator for the meeting.
75
Section 5 - Preliminary Design
Inspection team participants certify that unit logic and interfaces
accurately represent the system requirements and that developers
have applied correct design principles. Reviewers document their
assessment and note weaknesses or interface conflicts on design design
inspection checklists (Figure 6-3). The signed checklist also inspection
certifies that the unit follows prescribed project standards and checklists
conventions.
Reuse Verification
Reuse verification is the process of determining which of the
existing software components specified in the reuse proposal should
be integrated into the new system design. During reuse verification,
developers examine code and documentation from sources such as
the FDFs Reusable Software Library (RSL). Developers draw on
their experience in considering the integrity of the overall system
architecture, the clarity of the design, and system performance.
When the reuse plan recommends using large portions of existing
systems, developers must assess the trade-offs of compromising an
optimum system design to make it compatible with existing
software. They must consider long-term impacts on total software
development costs, design clarity, performance requirements,
system size, maintainability, and reliability when weighing design
options.
When factors (such as incompatible language versions or a high
incidence of operating system-specific calls) prohibit an existing
component from being reused, developers can study the software
and its documentation to understand its function, organization, and
data structures before designing a component compatible with the
new system. Thus, reused experience is shared across projects even
when explicit design and code cannot be.
Analysis Methods: Prototyping, Performance Modeling, and
Code Analysis
During preliminary design, the development team uses prototyping
to validate design concepts and to test the trade-offs of design
options. Developers compose prototype drivers (or scaffolding
code) to exercise components planned for reuse in the new system.
They also prototype user screens and report formats. To confirm
that existing components will meet the new system's performance
requirements, developers couple prototyping with performance and
source code analysis, as described below.
76
Section 5 - Preliminary Design
Performance modeling is a means of predicting how efficiently a
program will use resources on a given computer. To generate these
predictions, developers use such parameters as the number of units
anticipated, the volume and frequency of the data flow, memory
usage estimates, and the amount of program I/O. Analogy with
existing, similar systems may also be used. Results of performance
modeling assist developers in deciding among design options.
If executable code exists (e.g., scaffolding code or reused units),
developers can run performance analyzers, such as Problem
Program Evaluator (PPE) or the VAX Performance and Coverage
Analyzer, concurrently with the code. These dynamic analyzers
generate information such as CPU time, I/O counts, and page fault
data that help developers identify areas of the code (e.g., inefficient
loop structures or calculations) that need to be redesigned.
Static code analyzers (e.g., VAX Source Code Analyzer) are tools
that read the source code of existing components and generate
information describing their control structure, symbol definitions,
and variable occurrences. A developer can examine the call trees
produced by a static code analyzer to assess the scope of a proposed
change to a reusable component's interfaces. The designer can then
decide which approach is better — to modify and test all affected
units or to design a new component.
MEASURES
During preliminary design, managers continue to use the objective
measures of the requirements analysis phase. They also begin to
monitor additional progress data. The following measures are
collected:
• The number of units designed versus the number identified
• Requirements questions and answers, TBDs, and changes
• Staff hours
• Estimates of system size, effort, schedule, and reuse
The source of these data and the frequency of data collection and
evaluation are shown in Table 5- 1 .
Evaluation Criteria
units
designed
Project leaders estimate the number of units that will be needed to
represent the preliminary system design. Against this estimate, they
track the number of unit designs (prolog and PDL) that have been
generated and the number certified. Management plots assist in
77
Section 5 - Preliminary Design
Table 5-1. Objective Measures Collected During the Preliminary Design Phase
MEASURE
SOURCE
FREQUENCY
(COLLECT/ANALYZE)
DATA COLLECTION
CONTINUED
BEGUN
Staff hours (total and
by activity)
Developers and
managers
(via PRFs)
Weekly/monthly
*
Requirements (changes
and additions to
baseline)
Managers
(via Development
Status Forms (DSFs))
Biweekly/biweekly
*
Requirements (TBD
specifications)
Managers
(via DSFs)
Biweekly/biweekly
*
Requirements
(questions/answers)
Managers (via DSFs)
Biweekly/biweekly
*
Estimates of total SLOC
(new, modified, reused),
total units, total effort,
and schedule
Managers (via PEFs)
Monthly/monthly
*
*
(total units)
Status (units planned/
designed/ certified)
Managers (via DSFs)
Biweekly/biweekly
•
r
c
RULE
discovering trends or plateaus in this progress
data that signal impending difficulties. The
graph of units certified should closely follow
and parallel the graph for units designed in a
fairly smooth curve. Sharp increases (a "stair-
step" graph) will appear when many units are
hurriedly certified together in an effort to meet
schedules.
During preliminary design, a widening gap
between the number of requirements questions
submitted and the number of answers received
can be an early warning signal of impending v
rework and eventual schedule slippage. A
high number of questions and answers when
compared with systems of similar size and
complexity is interpreted the same way.
Tracking the number of TBD requirements that persist into the
preliminary design phase, especially those concerning external
interfaces and hardware changes, is crucial because TBDs represent
\
The number of units designed
should not be used as a measure
of unit completion. The correct
completion measure is the number
of certified unit designs.
requirements
questions
and answers
TBD requirements
78
Section 5 - Preliminary Design
requirements
changes
r
(
NOTE
A
Numbers of Q&As, TBDs, and
specification modifications can
change rapidly. Plots of these
factors help managers to assess
project status and
highlight problem
areas.
incompleteness in the design and increase the
potential for rework. TBDs should diminish
quickly in the early life cycle phases.
Specification modifications may be issued in
response to development team questions or
external project influences such as hardware
changes. The number and severity of
specification modifications resulting from
developers' questions reflect the quality of the
requirements and specifications document.
These changes are normally addressed by the
development and requirements definition teams.
The number and severity of specification
modifications from external causes have more
far-reaching implications and should alert
managers to anticipate long-term perturbations in
schedule and effort estimates.
staff hours
r
(
NOTE
\
SEL managers update effort, schedule,
and size estimates approximately once
a month and organize these estimates
on the Project Estimates Form (PEF).
Data from these forms are used to
generate system growth and progress
plots.
estimates
r
(
NOTE
\
Although a number of measures of
design quality (strength, etc.) have
been proposed, the SEL has not
yet found objective measures that
provide significant insight into the
quality of a design.
Significant deviations between planned and
actual staff effort hours warrant close
examination. When a high level of effort is
required to meet schedules, the development
team's productivity may be low or the problem
may be more complex than originally realized.
Low staff hours may indicate delayed staffing on
the project or insufficient requirements analysis.
The effects of these last conditions are not
always immediately obvious in preliminary
design, but will surface dramatically as design
deficiencies during subsequent phases.
Managers can now use the number of units
planned and average unit size to refine estimates
of system size. The number of reused units in
the system also becomes firmer; managers
identify units to be reused without change versus
those to be modified and revise effort and
schedule projections accordingly.
Estimates are a key management measure; widely
varying estimates or sharp increases always
warrant investigation. In the preliminary design
phase, excessive growth in system size estimates
is generally seen when requirements are unstable
or change control mechanisms are ineffective.
79
Section 5 - Preliminary Design
PRODUCTS
The primary product of the preliminary design phase is the high-
level design of the system, as documented in the preliminary design
report. The report incorporates the results of reuse verification and
prototyping and forms the basis for the detailed design document.
Because of their size, unit prologs and PDL are normally published
in a separate volume that is identified as an addendum to the report.
An oudine of the preliminary design report, showing format and
content, is provided as Figure 5-5.
PRELIMINARY DESIGN REVIEW
The phase concludes with the preliminary design review (PDR),
during which the development team presents the high-level system
design and the rationale for choosing that design over alternatives.
Also highlighted in the PDR are explanations of external system
interfaces, revisions to operations scenarios, major TBDs for
resolution, and issues affecting project quality and schedule.
Materials presented at PDR do not necessarily convey the technical
depth that the development team has achieved during preliminary
design; details of this technical effort are documented in the
preliminary design report. Developers limit the PDR presentation to
the nominal operating scenarios and significant contingency cases.
The presentation is directed to project managers, users, the
requirements definition team, and the CCB. Applications
specialists, analysts, quality assurance personnel, and managers
perform a detailed technical review of the preliminary design
material prior to attending the formal review. They evaluate the
system design and provide comments and critiques to the
development team during and immediately after the presentation.
RIDs are used by participants to record any issues that still need to
be resolved. The PDR format and schedule are shown in Figure
5-6, followed by an outline of the PDR hardcopy materials (Figure
5-7).
80
Section 5 - Preliminary Design
PRELIMINARY DESIGN REPORT
This report is prepared by the development team as the primary product of the preliminary design
phase. It presents the high-level design of the system and forms the basis for the detailed design
document. The suggested contents are as follows:
1. Introduction — purpose and background of the project, overall system concepts, and
document overview
2. Design overview
a. Design drivers and their order of importance (e.g., performance, reliability, hardware,
memory considerations, operating system limitations, language considerations, etc.)
b. Results of reuse tradeoff analyses; the reuse strategy
c. Critique of alternative designs
d. Discussion and high-level diagrams of the selected system design, showing hardware
interfaces, external data interfaces, interconnections among subsystems, and data flow
e. A traceability matrix of the subsystems against the requirements
f. Design status
(1) List of constraints, concerns, and problem areas and their effects on the design
(2) List of assumptions and possible effects on design if they are wrong
List of TBD requirements and an assessment of their effect on system size, required
effort, cost, and schedule
ICD status
Status of prototyping efforts
(3)
(4)
(5)
g. Development environment (i.e., hardware, peripheral devices, etc.)
Operations overview
a. Operations scenarios/scripts (one for each major product that is generated). Includes the
form and volume of the product and the frequency of generation. Panels and displays
should be annotated to show what various selections will do and should be traced to a
subsystem
b. System performance considerations
c. Error recovery strategies (automatic fail-over, user intervention, etc.)
Design description for each subsystem or major functional breakdown:
a. Discussion and high-level diagrams of subsystem, including interfaces, data flow, and
communications for each processing mode
b. High-level description of input and output
c. High-level description of processing keyed to operator-specified input and actions in
terms of points of control, functions performed, and results obtained (both normal and
abnormal, i.e., error processing and recovery)
d. Structure charts or object-oriented diagrams expanded to two levels below the
subsystem driver
e. Prologs (specifying the unit's purpose, operation, calling sequence arguments,
external references, etc.) and program design language (PDL) for each identified unit
(Prologs and PDL are normally published in a separate volume.)
Data interfaces for each internal and external interface:
a. Description, including name, function, frequency, coordinates, units, and computer type,
length, and representation
b. Format
(1) Organization, access method, and description of files (i.e., data files, tape, etc.)
(2) Layout of frames, samples, records, and/or message blocks
(3) Storage requirements
Figure 5-5. Preliminary Design Report Contents
81
Section 5 - Preliminary Design
PDR FORMAT
Presenters — software development team
Participants
• Requirements definition team
• Quality assurance representatives from both teams
• Customer interfaces for both teams
• User representatives
• Representatives of interfacing systems
• System capacity/performance analysts
•CCB
Schedule — after the preliminary design is complete and
before the detailed design phase begins
Agenda — selective presentation of the preliminary design
of the system
Materials Distribution
•The preliminary design report is distributed at least 1 week before
PDR.
• Hardcopy material is distributed a minimum of 3 days before PDR.
Figure 5-6. PDR Format
EXTTCRTTERIA
To determine whether the development team is ready to proceed with
detailed design, managers should ask the following questions:
• Have all components that are candidates for reuse been
analyzed? Have the trade-offs between reuse and new
development been carefully investigated?
• Have developers evaluated alternate design approaches and
chosen the optimum design?
• Have all design diagrams, prologs and PDL (or package
specifications, if applicable) been generated to the prescribed
level? Have they been inspected and certified?
• Have the key exit criteria been met? That is, has the preliminary
design report been produced and distributed, has the PDR been
successfully completed, and have all PDR RIDs been answered?
When the manager can answer "yes" to each of these questions, the
preliminary design phase is complete.
82
Section 5 - Preliminary Design
HARDCOPY MATERIAL FOR THE PDR
1. Agenda — outline of review material
2. Introduction — background of the project and system objectives
3. Design overview
a. Design drivers and their order of importance {e.g., performance, reliability, hardware,
memory considerations, programming language, etc.)
b. Results of reuse tradeoff analyses (at the level of subsystems and major components)
c. Changes to the reuse proposal since the SSR
d. Critique of design alternatives
e. Diagram of selected system design. Shows products generated, interconnections among
subsystems, external interfaces. Differences between the system to be developed and
existing, similar systems should be emphasized
f. Mapping of external interfaces to ICDs and ICD status
4. System operation
a. Operations scenarios/scripts — one for each major product that is generated. Includes
the form of the product and the frequency of generation. Panels and displays should be
annotated to show what various selections will do and should be traced to a subsystem
b. System performance considerations
c. Error recovery strategies
5. Major software components — one diagram per subsystem
6. Requirements traceability matrix mapping requirements to subsystems
7. Testing strategy
a. How test data are to be obtained
b. Drivers/simulators to be built
c. Special considerations for Ada testing
& Design team assessment — technical risks and issues/problems internal to the software
development effort; areas remaining to be prototyped
9. Software development/management plan — brief overview of how the development
effort is conducted and managed
10. Software size estimates — one slide
11. Milestones and schedules — one slide
12. Issues, problems, TBD items beyond the control of the development team
a. Review of TBDs from SSR
b. Other issues
c. Dates by which TBDs/issues must be resolved
Figure 5-7. PDR Hardcopy Material
83
mill i 1 1 i , m i in i i i« iiini t w m ii * i ■" ■
UiU I llll ill .dl llll III I
oo
to
a
o
3
I
■o
to
3
0)
O
CD
S"
3
* > « imnil! «■ nil
II! mi ■ *
Section 6 - Detailed Design
UFE
CYCLE
PHASES
REQUIREMENTS
DEFINITION
ACQUIRE-
MENTS
ANALYSIS
PRELIMI-
NARY
DESIGN
DETAILED
DESIGN
IMft-EMENTATJON
SYSTEM
TESTING
ACCEPTANCE
TESTING
SECTION 6
THE DETAILED DESIGN PHASE
m%>%^m$mz. *5x&
ENTRY CRITERIA
mi nary design report generated
completed
RIDs answered
EXIT CRITERIA
• Detailed design document generated
• CDR completed*
•CDR RIDs answered
&J88&aaea%^^
m
PRODUCTS
• Detailed design document
• Build plan*
• Build/release test plan*
I
MEASURES
• Units designed/identified
• Requirements Q&As, TBDs, and changes
• Staff hours
• Estimates of system size, effort,
schedule, and reuse
•CPU hours
METHODS AND TOOLS
• Functional decomposition and
object-oriented design
• Reuse verification
•Analysis methods
• Design walk-throughs
• Design inspections
• Prologs and PDL
■SENs
KEY ACTIVITIES
Development Team
• Prepare detailed design diagrams
• Conduct design walk-throughs
• Refine the operational scenarios
• Complete prologs and PDL for all units
• Provide input to the build plan and begin
the build/release test plan*
• Prepare the detailed design document
•Conduct the CDR
Management Team
• Assess lessons learned from the
preliminary design phase
• Control requirements changes
• Control the. quality of the design process .
• Prepare the build plan
• Coordinate the transition to implementation
• Direct the CDR
Requirements Definition Team
• Resolve remaining requirements issues
• Participate in design walk-throughs and
CDR
Acceptance Test Team
• Begin work on the acceptance test plan
• Prepare portions of analytical test plan
needed for Build 1
f' •v---- -v 'WW
wzm
*On projects using the Cleanroom methodology, each build consists of a detailed design
phase followed by an implementation phase. Statistically selected tests are planned
and performed by a separate test team, which compiles, integrates, and tests each
build as soon as it has passed coding inspection. An informal review is conducted
after the design phase in each build.
M*MWrtHmi>M&ttHiliwiaili^
HMMMMtMAUiMMM
85
PRECEDING PilGE BLANK NOT RIMED
Section 6 - Detailed Design
OVERVIEW
The purpose of the detailed design phase is to produce a completed
design specification that will satisfy all requirements for the system
and that can be directly implemented in code.
Unless comments expressed at the PDR indicate serious problems or
deficiencies with the preliminary design, detailed design begins
following the PDR. The detailed design process is an extension of
the activities begun during preliminary design. The development
team elaborates the system architecture defined in the preliminary
design to the unit level, producing a complete set of code -to
specifications. The primary product of the phase is the detailed
design document, which contains the design diagrams, prologs, and
PDL for the software system.
During this phase, the development team conducts walk-throughs of
the design for the requirements definition team and subjects each
design specification to peer inspection. At the conclusion of the
phase, the completed design is formally reviewed at the CDR.
Figure 6-1 shows the major processes of the detailed design phase.
KEYACTTVTTIES
While the development team is generating the detailed design, the
requirements definition team continues to resolve the remaining
requirements issues and TBDs. As soon as requirements questions
and changes level off, an additional team is formed to prepare for
acceptance testing. This acceptance test team usually consists of the
analysts who will use the system, along with some of the staff who
prepared the requirements and specifications document.
The activities of the development team, the management team, the
requirements definition team, and the acceptance test team are
itemized below. A suggested timeline for the performance of these
activities is given in Figure 6-2.
Activities of the Development Team
• Prepare detailed design diagrams to the lowest level of detail,
i.e., the subroutine/subprogram level. Successively refine each
subsystem until every component performs a single function and
can be coded as a single unit.
86
Section 6 - Detailed Design
Figure 6- 1. Generating the Detailed Design
Conduct design walk-throughs. Walk through each major function or object with
other developers and the requirements definition team. On small projects (e.g.,
simulators), conduct one walk-through per subsystem. On systems of 150 KSLOC or
more (e.g., AGSSs), hold two walk-throughs per subsystem — one in the early stages
of detailed design and one later in the phase.
Refine the operations scenarios for the system in light of the results of prototyping,
performance modeling, and design activities. Finish specifying detailed input and
output formats for each subsystem, including displays, printer and plotter output, and
data stores.
87
Section 6 - Detailed Design
REQUIREMENTS
DEFINITION
TEAM
SOFTWARE
DEVELOPMENT
TEAM
ACCEPTANCE
TEST
TEAM
MANAGEMENT
TEAM
Answer developer questions; resolve requirements issues, TBDs
Participate in design walk-th roughs
^^
Participate in CDR
Complete all prototyping
Refine operational scenarios
Finalize design diagrams
Conduct design walk-throughs
_37
Prepare all prologs and PDL
Conduct design inspections
Prepare detailed design report
NOTE: Dashed lines indicate
that the'activity is intermittent
Prepare build test plan
Prepare and conduct CDR ^
Resolve CDR RIDs
Begin to prepare the acceptance test plan
Plan analytical tests for Build 1
Record project history data, reassess schedules, staffing, resources
Plan and control requirements changes; control quality
Prepare build plan
Update SDMP estimates
Direct the CDR
Coordinate the transition to implementation
FOR
COR
-TIME"
Figure 6-2. Timeline of Key Activities in the Detailed Design Phase
88
Section 6 - Detailed Design
Complete all prototyping efforts. The detailed design presented
at CDR should contain no uncertainties that could have been
resolved through prototyping.
• Complete prologs and PDL for all units. Generate prologs and
PDL for the new units specified in the design diagrams. On Ada
projects, package specifications and PDL should also be
compiled. This means that package bodies are compiled, and
that, at a minimum, subprogram bodies each contain a null
statement.
Identify all units (from the RSL or other sources) that will be
reused, either verbatim or with modifications. Transfer existing
units that require modification into online libraries, and revise
the prologs and PDL of these units as necessary.
Ensure that all unit designs are formally inspected and certified
(see Methods and Tools belowj. File the completed checklist in
the SEN for the unit.
• Provide input to the build plan and begin the build test plan.
Provide the technical information needed for the build plan to the
management team; include the order in which units should be
implemented and integrated. Prepare the test plan for the first
build and review it at CDR. (See Section 7 for the plan's format
and contents.)
• Prepare the detailed design document as a basis for the CDR.
Ensure that the team librarian adds all documentation produced
during the phase to the project library. (The only exceptions are
SEN materials, which are maintained by individual developers
until the unit has been coded and tested.)
• Conduct the CDR and respond to all CDR RIDs.
Activities of the Management Team
With a few exceptions, the activities of the management team during
the detailed design phase parallel those of the previous phase.
• Assess lessons learned from the preliminary design phase
and record information for the software development history,
including schedule data and project statistics. Reassess
schedule, staffing, and resources in view of these data.
• Control requirements changes. Continue to monitor the
number and scope of requirements questions and answers.
89
Section 6 - Detailed Design
Ensure that analysts and the customer understand the potential
impact of each requirement TBD and proposed specification
modification.
• Control the quality of the detailed design process and its
products. Ensure adherence to design standards, configuration
management procedures (especially change control), reporting
procedures, data collection procedures, and quality assurance
procedures. Review the design produced and participate in
design walk-throughs.
Ensure that all facets of the project are completely visible and
that there is close cooperation between the development team and
the other groups with which they must interact.
• Prepare the build plan. Use unit dependency information
provided by the technical leads and application specialists of the
development team to specify the portions of the system that will
be developed in each stage of the implementation phase.
Document the capabilities to be included in each build and
prepare a detailed milestone schedule, factoring in external
constraints and user needs.
• Coordinate the transition to the implementation phase. It is
usually necessary to increase the size of the development team to
simultaneously implement multiple subsystems within a build.
Inform the development team of the software engineering
approaches to be used during implementation and provide the
necessary training. Ensure that members of the development
team understand the code and testing standards, and the quality
assurance and configuration management procedures to be
followed.
Ensure that online project libraries are established, that strict
change-control procedures concerning these libraries are
followed, and that the necessary software for building and
testing the system is made available so that developers can begin
implementation immediately after the CDR.
• Direct the CDR. Schedule and participate in the review, and
ensure that all pertinent groups take part.
Activities of the Requirements Definition Team
• Resolve any outstanding requirements issues and TBDs,
preparing specification modifications as necessary. Warn
developers of any impending changes to requirements so that
90
Section 6 - Detailed Design
they can plan design activities accordingly. Respond to
developers' questions.
• Participate in design walk-throughs and the CDR. Review the
detailed design document before CDR. During the review,
provide a critique of the design. Use RIDs to document issues
and discrepancies.
Activities of the Acceptance Test Team
• Begin work on the acceptance test plan (Section 8) as soon as
requirements have stabilized. Requirements can be considered
as stable when developers are no longer submitting new
requirements questions and the number of TBDs has declined to
a low level.
• Prepare the portions of the analytical test plan that are
needed for Build 1 (see Section 7). Meet with the development
team to determine which analytical tests will be needed during
the first build of the implementation phase, and complete those
portions of the analytical test plan.
METHODS AND TOOLS
The same methods and tools used during the preliminary design
phase continue in use during detailed design:
• Functional decomposition and object-oriented design (OOD)
• Reuse verification
• Analysis methods: prototyping, performance modeling, and
code analysis
• Design walk-throughs
• Design inspections
• Prologs and PDL
• SENs
During the detailed design phase, the development team uses
functional decomposition or OOD techniques to take the design
diagrams down to the lowest level of detail (see Figures 5-3 and
5-4). Prototyping and performance modeling efforts that were
undertaken to address design issues are completed. The team also
completes its examination of the code and documentation of reusable
components to determine whether each unit can be incorporated into
the system as planned.
91
Section 6 - Detailed Design
The other methods and tools that continue in use from the
preliminary design phase — design walk-throughs, design
inspections, prologs and PDL, and SENs — have new aspects or
applications that are introduced during detailed design.
discussed in the paragraphs that follow.
These are
r
r
^TAILORING NOTE ^
Design Walk-throughs
During the detailed design phase, one or two
design walk-throughs are held for each
subsystem. Participants include members of
the development team, the requirements
definition team, representatives of systems
that will interface with the software under
development, and managers. At these walk-
throughs, members of the development team
step through the subsystem's design,
explaining its algorithms, interfaces, and
operational aspects. Participants examine and
question the design at a detailed level to
uncover such issues as mis-matched
interfaces, contradictions between
algorithms, or potential performance
problems.
The design of the user interface is specifically
addressed in one or more additional walk--
throughs. These sessions are attended by the
future users of the system and concentrate on
the users' point of view. The users learn
how the system will look to them under
representative operational scenarios, give
feedback to developers, and provide a "reality
check" on the updated requirements and
specifications. Problems encountered with
the specifications are documented on
question-and-answer forms and submitted to
the requirements definition team for action.
Design Inspections
Design inspections are the key methodology of the detailed design
phase. Because the CDR is conducted primarily for the benefit of
management and users, a detailed, component-by-component review
of the design takes place only during design inspections. It is
during these inspections that each separate design product is
examined for correctness, completeness, and comprehensibility.
\
Design walk-throughs and
inspections are initiated
during the preliminary design
phase. Section 5 defines
both inspections and
walk-throughs and explains
the differences between the
two methods.
Separate, formalized design
walk-throughs are not always held
on small tool development efforts.
On these projects, walk-throughs
may be combined with design
reviews. The reviews are generally
informal, since the products being
examined will not be put under CCB
control, and focus on system
operabiiity and the user interface.
92
c ■ -2~-
Section 6 - Detailed Design
Design inspections are always conducted, regardless of the size or
type of the project.
At a minimum, the inspection team consists of the moderator, the
design's author, and another member of the development team.
Units that require detailed knowledge of the application (such as the
physics of flight dynamics) are inspected by the development team's
application specialist.
On large projects, two or more of the author's peers will inspect the
design and a representative from the quality assurance office may be
included. Leaders of teams that are developing subsystems that
interface with the components being inspected should also attend.
Each inspection session covers a set of logically related units (5 to
10 on average), for which design diagrams and unit-level PDL and
prologs have been completed. Copies of the materials to be
inspected are distributed to members of the inspection team several
days before the session.
r
c
RULE
~Y
Every unit is important to the
developing system and each new or
modified unit must be reviewed with
equal thoroughness. Neglecting a
unit because it is reused software, it is
not part of a "critical" thread, or its
functions are "trivial" can be
disastrous.
Each member individually reviews the materials
for technical content and adherence to design
standards, and comes to the inspection session
prepared to comment on any flaws he or she has
uncovered. The moderator records the errors,
resolves disagreement, and determines whether
reinspection is necessary. The author answers
questions and takes action items to resolve the
flaws that are identified. All participants are
responsible both for finding errors and for
ensuring that designs are traceable to
requirements.
Design inspection checklists, such as the one
shown in Figure 6-3, are distributed to reviewers
with the inspection materials to remind them of
key review criteria. A master checklist is
compiled by the moderator and is used to certify
the unit when inspection is complete.
Compiled Prologs and PDL
During the detailed design phase of an Ada project, the development
team generates and compiles all PDL for the system. For this work,
and for the code and test activities of subsequent phases, developers
in the STL use sets of tools and utilities that are part of an Ada
software development environment.
93
Section 6 - Detailed Design
UNIT DESIGN INSPECTION CHECKLIST
Unit Name
Task Number
Inspection Moderator.
_System_
.Build/Release
Jnitial Inspection Date.
KEY INSPECTION QUESTIONS
1. Does the design present a technically valid way of achieving the
unit's assigned function?
2. Is all data required by the unit available and defined?
3. Is the dependency between each input and output argument and
the processing apparent in the design?
4. Is it clear from the design where the outputs from the unit are
generated?
5. Is the dependency between each external reference (e.g., unit
file, record) and the processing apparent in the design?
6. Does the design include the necessary error detection and
recovery logic7
7. Is the design, as written, sufficient to handle the upper and
lower bounds associated with unit inputs (especially arguments)?
ADDITIONAL INSPECTION QUESTIONS
8. Are the prolog and PDL consistent with the unit's design diagram?
9. Does the PDL define logic as opposed to code?
10. Does the prolog contain enough information to describe the unit
clearly to the unfamiliar reader?
11. Do both the prolog and PDL conform to applicable standards?
ACTION ITEMS AND COMMENTS
(List on a separate sheet. Refer to questions above by number.)
INSPECTION RESULTS
1. If all answers to 1-11 were "Yes, " the unit's design passes. Check
here and sign below. I J
2. If there are serious deficiencies in the design (e.g., if more than one
key question was answered "No") the author must correct the unit
design and the moderator must schedule a reinspection.
Scheduled date for reinspection:.
Yes No Corrected
3.
If there are minor deficiencies in the design, the author must correct
the unit design and hold a followup meeting with the moderator.
Scheduled date for followup meeting: .
Moderator's signature certifies that this unit meets all applicable standards and satisfies
its requirements, and that any identified deficiencies have been resolved (applicable at
initial inspection, followup meeting, or reinspection).
Moderator signature:.
Date.
Figure 6-3. Checklist for a Unit Design Inspection
94
Section 6 - Detailed Design
1
f DEFINITION
In Ada, the term program library refers
not to a library of programs, but to a
library of compilation units that comprise
on* or mora programs. To detect
consistency errors before an entire
program is constructed, the Ada compiler
cross-checks information from separately
compiled units. The program library is
the mechanism by which the compiler
retains the information needed to perform
these checks efficiently.
The Ada development environment provides a
program library manager that functions as the
user interface to the Ada compiler and the linker.
The program library manager keeps track of
which compilation units are in the library, when
they were compiled, which ones have been
made obsolete by more recent compilations, and
the dependencies among units.
The development environment also includes a
language-sensitive editor (LSE). The LSE
provides a template for the Ada language that
allows developers to enter and edit prologs and
PDL interactively.
Ada developers use an additional tool to expedite the generation of
package bodies. This utility reads a "bare-bones" package
specification, enhances it to conform to local Ada styles (see
Reference 22), and uses the specification to build templates for the
package body and subprograms.
The other components of the Ada development environment are used
primarily during the implementation phase of the life cycle and are
described in Section 7.
r
(
DEFINITION
1
r
Throughout this document, the
term "module" is used to
denote a collection of logically
related units. In the flight
dynamics environment, a
module usually consists of 5 to
10 units.
f TAILORING NOTE ^
On Ada projects, one SEN is
used to store documentation
for each package. That is, the
current listings, inspection
checklists, and relevant design
diagrams for the package's
specification, body, and
subprograms are maintained
together in a single notebook.
Software Engineering Notebooks (SENs)
By the end of the detailed design phase, the
development team's librarian will have created
a SEN for each unit and/or module in the
system. The developer uses the SEN to store
all documentation that pertains to a unit,
including the current listing of the unit's prolog
and PDL, the unit design inspection checklist,
design diagrams, and notes documenting
design decisions. Through unit code, test, and
integration, each developer retains the SENs
for the units for which he or she is responsible.
When the units in a module have been coded,
tested, and certified, they are ready to be placed
under configuration management; at this point,
the developer gives the SENs to the librarian
who files them in the project library.
95
Section 6 - Detailed Design
MEASURES
Objective Measures
The objective measures used during the preliminary design phase are
also the yardsticks used for detailed design, with one addition —
CPU hours. The measures to be collected are as follows:
• The number of unit designs that have been certified versus the
number identified
• Requirements questions and answers, TBDs, and changes
• Staff hours
• Estimates of system size, effort, schedule, and reuse
• Total CPU hours used to date
The source of these data and the frequency of data collection and
evaluation are shown in Table 6-1. The paragraphs that follow
provide specific recommendations for evaluating these measures
during detailed design, and supplement the guidance given in
Section 5.
Evaluation Criteria
The number of TBD requirements is a vital metric in this phase.
Ideally, all TBD requirements are resolved by the end of the phase.
If this goal is impossible to achieve, the management team must
assess how the remaining TBDs will affect system size, system
design, staff hours, costs, and schedule, and then evaluate the
feasibility of continuing. In the flight dynamics environment,
implementation should be postponed if "mission critical"
requirements remain unresolved or if more than 10 percent of the
total number of requirements are still TBD.
A large number of specification modifications in the detailed design
phase is usually an indication that requirements and specifications
are unstable or erroneous. The management team must assume that
the level of specification modifications will remain high throughout
the implementation and system test phases, and should reevaluate
system size estimates and schedules accordingly (Figure 6-4).
By the end of preliminary design, managers know the projected
number of units in the system. By the end of the detailed design
phase, all units to be reused will have been identified, along with the
degree of modification needed to incorporate them into the new
system. Managers can combine these new figures with productivity
rates from past projects to reestimate the effort hours and staffing
TBD requirements
requirements
changes
size and effort
estimates
96
Section 6 - Detailed Design
Table 6-1. Objective Measures Collected During the Detailed Design Phase
MEASURE
SOURCE
FREQUENCY
(COLLECT/ANALYZE)
DATA COLLECTION
CONTINUED
BEGUN
Staff hours (total and
by activity)
Developers and
managers
(via PRFs)
Weekly/monthly
*
Computer use (CPU
hours and runs)
Automated tool
Weekly/biweekly
*
Requirements (changes
and additions to
baseline)
Managers
(via DSFs)
Biweekly/biweekly
#
Requirements (TBD
specifications)
Managers
(via DSFs)
Biweekly/biweekly
*
Requirements
(questions/answers)
Managers (via DSFs)
Biweekly/biweekly
*
Estimates of total SLOC
(new, modified, reused),
total units, total effort ,
Managers (via PEFs)
Monthly/monthly
*
and schedule
Status (units planned/
designed/certified)
Managers (via DSFs)
Biweekly/biweekly
*
r
o
"\
Recent SEL studies have shown
that the relative cost of reusing
existing units, as a percentage
of the cost to develop the unit
newly, is 20 percent for
FORTRAN projects and 30 percent for Ada
projects. The higher percentage for Ada is
correlated to a significantly greater
proportion of reused to new units on
these projects as compared with
FORTRAN efforts.
levels necessary to complete development.
(See Table 3-2 of Reference 12 for guidance
in computing these estimates.)
Near the end of the phase, size estimates can
balloon unexpectedly if many units are moved
from the "reused" to the "new" category.
Managers need to ensure that decisions to
create new units rather than reuse existing
ones are justified and not merely a
manifestation of the NIH ("not invented
here") syndrome.
computer
use
Computer use, as expressed in CPU hours or the number of
sessions/job runs, is a key indicator of progress during design and
implementation. On a typical flight dynamics project, a small
amount of CPU time should be recorded during the design phases as
the development team conducts prototyping efforts and enters PDL.
Because Ada PDL is compiled, more CPU time should be logged on
Ada projects.
97
Section 6 - Detailed Design
300000
260000
<2§ 220000 \.
£ 180000
140000 **
100000
Symptom: Size estimates
increase then drop during
detailed design.
Cause: Excessive
requirements changes and
neffective change control
mechanisms. Requirements
that were deleted from
specifications had to be
restored during the
implementation phase.
Corrective Actions: Assume
that the instability of
requirements will lead to a
high level of specification
modifications during
implementation and testing.
Analyze risks, replan size
estimates accordingly, and
request additional budget.
NOTE In the SEL environment, a large number of TBDs in the requirements and specifications,
combined with a substantial number of requirements changes, typically cause a system to grow
up to 40 percent larger than is estimated at the time of PDR. As the details of the unknown
portions of the system become clear, the size estimate grows more rapidly. The range of
accepted growth (shown in grey) narrows as the system becomes more defined.
Figure &4. Example of the Impact of Requirements Changes on Size Estimates —
the UARS Attitude Ground Support System
A lack of CPU hours on a project that is three-quarters of the way
through the detailed design phase should raise a red flag. The
management team should investigate to determine whether the team
is avoiding using the computer because of inadequate training or is
mired in redesign as a result of specification modifications.
PRODUCTS
The development team's primary product for this phase is the
completed design for the system, including unit prologs and PDL,
as recorded in the detailed design document. In addition, the
management team produces a build plan for implementing the
design, and the development team begins to develop build test plans.
These products are described in the paragraphs that follow.
98
Section 6 - Detailed Desk
r
(
NOTE
r
(
NOTE
as
itjb
Detailed Design Document
During the detailed design phase, the preliminary design report is
expanded and refined to reflect the results of detailed design
activities. Before CDR, this detailed design document is completed
and distributed for review. The format and contents of the
document are shown in Figure 6-5.
The Build Plan
-^ The build plan describes the strategy that will be
I k applied in constructing the system during the
implementation phase. The plan defines the
sequence in which software components are
coded and integrated into executable subsystems
and the order in which these subsystems are
combined into systems.
See SECTION 2 for definitions
of the terms build and
release and for guidance in
determining the number of
builds and releases that are
needed as a function of
project size.
1
Additional builds are required
on projects using Cleanroom
methodology. On Cleanroom
projects, a build should
consist of portions of the
software that can be readily
tested and integrated
together and should last no
more than 2 or 3 months.
The plan usually contains three parts:
An itemization of the capabilities that will be
provided in each build or release
• The rationale, including relevant constraints,
for providing specified capabilities in a
particular build
• The implementation schedule
A preliminary build plan is usually generated
during the preliminary design phase. During
detailed design, the build strategy is expanded
and refined until, at the conclusion of the phase,
the updated strategy is included in the SDMP and
presented for evaluation at the CDR.
Builds must be planned to accommodate user needs for operational
capabilities or intermediate products. Plans must also allow for
fluctuating and TBD requirements. Initially, the development team
determines the optimum plan for implementing the system from a
technical viewpoint. The management team then analyzes the plan
and decides how it must be perturbed to accommodate the user,
external (e.g., mission) schedules, specification modifications, and
unknowns. Both the optimum and adjusted plans are presented at
CDR.
99
Section 6 - Detailed Design
DETAILED DESIGN DOCUMENT
This document is the primary product of the detailed design phase. To complete the document,
the development team updates similar material from the preliminary design report and adds
greater detail. The suggested contents are as follows:
1. Introduction — purpose and background of the project, overall system concepts, and
document overview
2. Design overview
a. Design drivers and their order of importance
b. Reuse strategy
c. Discussion and high-level diagrams of the selected system design, showing hardware
interfaces, external data interfaces, interconnections among subsystems, and data flow
d. Traceability matrix of major components against requirements and functional
specifications
e. Design status
(1) List of constraints, concerns, and problem areas and their effects on the design
(2) List of assumptions and possible effects on design if they are wrong
(3) List of TBD requirements and an assessment of their effect on system size, required
effort, cost, and schedule
(4) ICD status
(5) Results of prototyping efforts
f. Development environment
3L Operations overview
a. Operations scenarios/scripts
b. System performance considerations
4. Design description for each subsystem or major functional breakdown:
a. Overall subsystem capability
b. Assumptions about and restrictions to processing in each mode
c. Discussion and high-level diagrams of subsystem, including interfaces, data flow, and
communications for each processing mode
d. High-level description of input and output
e. Detailed description of processing keyed to operator-specified input and actions in
terms of points of control, functions performed, and results obtained (both normal and
abnormal, i.e., error processing and recovery)
f. Structure charts or object-oriented diagrams expanded to the unit level,
showing interfaces, data flow, interactive control, interactive input and output, and
hardcopy output
g. Internal storage requirements, i.e., description of arrays, their size, their data capacity in
all processing modes, and implied limitations of processing
h. Detailed input and output specifications
(1) Processing control parameters, e.g., NAMELISTs
(2) Facsimiles of graphic displays for interactive graphic systems
(3) Facsimiles of hardcopy output
i. List of numbered error messages with description of system's and user's actions
j. Description of COMMON areas or other global data structures
k. Prologs and PDL for each unit (normally kept in a separate volume because of size)
5b Data interfaces — updated from description in preliminary design report (see Figure 5-5)
Figure 6-5. Detailed Design Document Contents
100
Section 6 - Detailed Design
Each build should address a coherent subset of the requirements and
specifications and take three to five months to implement. Each
build should cover a set of completed units; that is, the build plan
should not require modifications or enhancements to individual units
during later builds.
( TAILORING NOTE ^
( TAILORING NOTE
(cont.)
In the flight dynamics
environment, the initial build
(B1) usually provides the core
capabilities needed in a function-
ing system. Middle builds (B2 to
Bn-1) supply all critical
capabilities. The last build (Bn)
is restricted to "bells and
whistles" and problem fixes.
r
(
NOTE
1
The build plans for flight dynamics
projects also include the dates by
which developers need to receive
unit-level, analytic test plans from the
acceptance test team. See SECTION 7
for detailed information about the
purpose and content of these plans.
The first build must be kept simple,
particularly if the development team
is unfamiliar with the development
environment or programming
language being used. The next
builds should address high-risk
specifications and critical software
capabilities, such as performance
requirements, major control
functions, and system and user
interfaces. The build strategy must
ensure that capabilities that can
have a major impact on the
software design are completed
early, so that any problems can be
handled while there is still time to
recover.
Since the last build will grow to include the
implementation of specification modifications
and the resolution of problems remaining from
earlier builds, it should be kept small in initial
planning. The next-to-last build, therefore, must
supply all crucial system capabilities. If
specification modifications that add new features
to the system are received during the
implementation phase, additional builds that
extend the phase may be needed to ensure that
existing builds can proceed on schedule.
Build Test Plans
As soon as a build has been defined, the development team can
begin to specify the tests that will be conducted to verify that the
software works as designed and provides the capabilities allocated to
the build or release. The development team executes the build test
plan immediately following integration of the build.
The test plan for the first build is defined during the detailed design
phase. Any modifications to the overall testing strategy that are made
as a result of defining this first test plan are presented at the CDR.
101
Section 6 - Detailed Design
Test plans for the remaining builds are generated during the
implementation phase.
The format and content of build test plans are described in Section 7.
CRTT1CAL DESIGN REVIEW
The detailed design phase culminates in the CDR. This review is
attended by the development team and its managers, the
requirements definition team and its managers, quality assurance
representatives, user representatives, the CCB, and others involved
with the system. Participants evaluate the detailed design of the
system to determine whether the design is sufficiently correct and
complete for implementation to begin. They also review the build
plan to ensure that the implementation schedule and the capabilities
allocated to the builds are feasible.
The emphasis at CDR is on modifications
— to requirements, high-level designs,
system operations, and development plans
— made since the PDR. Speakers should
highlight these changes both on the slides
and during their presentations, so that they
become the focus of the review. The CDR
also provides an opportunity for the
development team to air issues that are of
concern to management, the mission project
office, quality assurance personnel, and the
CCB.
f TAILORING NOTE ^
■
For very large projects , a CDR
should be held for each major
subsystem and/or release in
order to cover all aspects of the
system and to accommodate
changing requirements. On such
projects, it is vital to have one
review, i.e., a System Design
Review, that covers the entire
system at a high level.
r
o
W
Figure 6-6 shows the recommended CDR
format. An outline and suggested contents
of the CDR hardcopy material are presented
in Figure 6-7. Note that material that was
covered at PDR is not presented again,
except as needed to contrast changes. For
this concise format to be effective,
participants must be familiar with the project
background, requirements, and design.
They should have attended the PDR and
studied the detailed design document before
the meeting.
Reviewers should address the following questions:
• Does the design satisfy all requirements and specification ?
REUSE NOTE
\
At the CDR, developers present
statistics snowing the number
' and percentage of components to
be reused, and which of these are
drawn from the RSL. They also
present key points of the detailed
reuse strategy, identify any
changes to the reuse proposal
that have been made since PDR,
and describe new/revised reuse
tradeoff analyses.
102
Section 6 - Detailed Design
CDR FORMAT
Presenters — software development team
Participants
• Requirements definition team
• Quality assurance representatives from both teams
• Customer interfaces for both teams
• User representatives
• Representatives of interfacing systems
• System capacity/performance analysts
■CCB
Attendees should be familiar with the project background, require-
ments, and design.
Schedule — after the detailed design is completed and before
implementation is begun
Agenda — selective presentation of the detailed design of the system.
Emphasis should be given to changes to the high-level design, system
operations, development plan, etc. since PDR.
Materials Distribution
• The detailed design report is distributed at least 10 days before the
CDR.
• Hardcopy material is distributed a minimum of 3 days before the
review.
Figure 6-6. CDR Format
Are the operational scenarios acceptable?
Is the design correct? Will the transformations specified produce
the correct output from the input?
Is the design robust? Is user input examined for potential errors
before processing continues?
Have all design guidelines and standards been followed? How
well have data usage and access been localized? Has coupling
between units (i.e., interunit dependency) been minimized? Is
each unit internally cohesive (i.e., does it serve a single
purpose)?
Is the design testable?
Is the build schedule structured to provide early testing of end-
to-end system capabilities? Is the schedule reasonable and
feasible for implementing the design?
103
Section 6 - Detailed Design
1.
2.
4.
&
7.
&
10.
11.
1Z
13.
14.
15.
HARDCOPY MATERIAL FOR THE CDR
Agenda — outline of review material
Introduction — background of the project, purpose of the system, and an agenda
outlining review materials to be presented
Design overview — major design changes since PDR (with justifications)
a. Design diagrams, showing products generated, interconnections among subsystems,
external interfaces
b. Mapping of external interfaces to ICDs and ICD status
Results of prototyping efforts
Changes to system operation since PDR
a. Updated operations scenarios/scripts
b. System performance considerations
Changes to major software components since PDR (with justifications)
Requirements traceability matrix mapping requirements to major components
Software reuse strategy
a. Changes to the reuse proposal since PDR
b. New/revised reuse tradeoff analyses
c. Key points of the detailed reuse strategy, including software components to be reused
in future projects
d. Summary of RSL contributions — what is used, what is not, reasons, statistics
Changes to testing strategy
a. How test data are to be obtained
b. Drivers/simulators to be built
c. Special considerations for Ada testing
Required resources — hardware required, internal storage requirements, disk space,
impact on current computer usage, impacts of compiler
Changes to the SDMP since PDR
Implementation dependencies {Ada projects) — the order in which components
should be implemented to optimize unit/package testing
Updated software size estimates
Milestones and schedules including a well-thought-out build plan
Issues, risks, problems, TBD items
a. Review of TBDs from PDR
b. Dates by which TBDs and other issues must be resolved
Figure 6-7. CDR Hardcopy Material
104
Section 6 - Detailed Design
EXTT CRITERIA
To determine whether the development team is ready to proceed with
implementation, the management team should consider the following
questions:
• Are all design diagrams complete to the unit level? Have all
interfaces — external and internal — been completely specified?
• Do PDL and prologs exist for all units? Have all unit designs
been inspected and certified?
• Have all TBD requirements been resolved? If not, how will the
remaining TBDs impact the current system design? Are there
critical requirements that must be determined before
implementation can proceed?
• Have the key exit criteria for the phase been met? That is, has
the detailed design document been completed, has the CDR been
successfully concluded, and have responses been provided to all
CDR RIDs?
When all design products have been generated and no critical
requirements remain as TBDs, the implementation phase can begin.
105
Section 6 - Detailed Design
106
Section 7 - Implementation
LIFE
CYCt£
PHASES
REQUIREMENTS
OEFIMTION
REQUIRE-
MENTS
ANALYSIS
PREUMI
NARY
DESIGN
OETAlLED
DESIGN
IMPLEMENTATION
SYSTEM
TESTl\a
tanceI
riNQ I
ACCEPTANCE
TESTING
SECTION 7
THE IMPLEMENTATION PHASE
—^^^^™^— ■■"""■" IMIMh*J' ' "■■■■■■■■■M....MMit*^..frM.tt...i.M...^«.,^^ .. •■ ■■■■■|| Y ■ mi |
ENTRY CRITERIA
• Detailed design document generated
• CDR completed
• CDR RIDs answered
PRODUCTS
• System code and supporting data
• Build test plans and results
• System and analytical test plans
■ — '■■'■■■■■ ,-:/...».-ga-.vw.g , ...'....-.. .S"
s
EXIT CRITERIA
•All system code and supporting data
generated and tested
• Build test plans successfully executed
• System test plan completed
• User's guide drafted
wwwti.
MEASURES
Units coded/ code-certified/ test-certified
vs. units identified
• Requirements Q&As, TBDs, and changes
• Estimates of system size, effort,
schedule, and reuse
• Staff hours
• CPU hours
• SLOC in controlled libraries (cumulative)
• Changes and errors (by category)
^w^^ww^r —
mmuu — ■■■■■ r!i<~n ' r
.Sr"£"& 4* ;££'"'
KEY ACTIVITIES
^bH metho°s and tools
• Code reading
• Unit testing
■ Module integration testing
• Build testing
• Configuration management
•SENs
•CASE
52^^^22ESE
ISWWWTOWWW
Requirements Definition Team
• Resolve any remaining requirements issues
• Participate in build design reviews (BDRs)
Development Team
• Code new units and revise existing units
• Read new and revised units
•Test and integrate each unit/module*
• Plan and conduct build tests*
• Prepare the system test plan*
• Draft the user's guide
■ Conduct build design reviews
Management Team
• Reassess schedules, staffing, training, and
other resources
• Organize and coordinate subgroups
within the development team
• Control requirements changes
• Ensure quality in processes and products
• Direct build design reviews
• Coordinate the transition to system testing
Acceptance Test Team
Complete the acceptance test plan draft
Complete the analytical test plan
?*W3^*I...U..U...l.l.«WW!WWW*lllU..UUUM.«
gSWWWffl
liU^,.^JJx^,^^..,j.u,,i.iuWiMi LiuiijimmMu..,, umawim^.,. u..a.mmmm.ii.uiimjmim
.iw Projects that use the Cleanroom methodology have an independent test team
J
mm
■ilia n '. "™ «.™«i,iv|)7 im»c an u lucjjciiuoi n iosi ieam.
s4Sa Developers prepare and verify each other's code, then submit the code (in small builds)
to the test team for compilation and testing.
BSfflBSlffiBWHBPWMW
PRECEDE PA3E BL/^K NOT FILMED
107
Section 7 - Implementation
OVERVIEW
The purpose of the implementation phase is to build n complete,
high-quaJiiy software system from the "blueprint" provided m the
detailed design document The implementation phase begins after
CDR and proceeds according to the build plan prepared during the
detailed design phase. For each build, individual programmers code
and test the units identified as belonging to the build, integrate the
units into modules, and test module interfaces.
At the same time, the application specialists on the development team
prepare plans designed to test the functional capabilities of the build.
Build regression tests — a selection of tests already conducted in
previous builds — are included in each build test plan to ensure that
newly added capabilities have not affected functions implemented
previously. All build test plans are reviewed for correctness and
completeness by the management team.
When all coding, unit testing, and unit integration testing for the
build are complete, selected members of the development team build
the system from the source code and execute the tests specified in
the build test plan. Both the management team and the development
team review the test results to ensure that all discrepancies are
identified and corrected.
As build testing progresses, the development team begins to put
together the user's guide and the system description documents. A
draft of the user's guide must be completed by the end of the
implementation phase so that it can be evaluated during system
testing. Material from the detailed design document is updated for
inclusion in the system description document, which is completed at
the end of the system test phase.
Before beginning the next build, the development team conducts a
build design review (BDR). The formality of the BDR depends on build design
the size of the system. Its purpose is to ensure that developers, review
managers, and customer representatives are aware of any
specification modifications and design changes that may have been
made since the previous review (CDR or BDR). Current plans for
the remaining builds are presented, and any risks associated with
these builds are discussed.
The plans for testing the completed system (or release) are also
generated during the implementation phase. Application specialists
from the development team prepare the system test plan, which is
the basis for end-to-end testing during the next life cycle phase. At
the same time, members of the independent acceptance test team
108
Section 7 - Implementation
prepare the test plan that they will use during the acceptance test
phase.
The implementation process for a single build is shown in
Figure 7-1. Figure 7-2 shows that these implementation processes
are repeated for each build and that a larger segment of the life cycle
— extending from the detailed design phase through acceptance
testing — is repeated for each release.
•NOTE: Verification usually consists of coda reading and unit testing. After the programmer
55E-?SL»g If mHK*uM**- if '* «•** bV " !•«" two other member, of the development team.
When the readers paw and certify the unit, the programmer conducts the unit teats. In the
Cleanroom methodology, however, coded units are read, then submitted to an independent test
teem for compilation, integration, and testing.
See KEY ACTIVITIES for descriptions of the processes in this diagram. The contents of build test
plana are covered under PRODUCTS. BUILD REVIEWS are the topic of a separate subsection
auiLOTisTRaroirr
Figure 7-1. Implementing a Software Build
109
Section 7 - Implementation
SAB
ssn
POR
CYCU
REQUIREMENTS
OEBNfnON
REQUIRE-
MENTS
ANALYSIS
PRELIMI-
NARY
DESIGN
OETAILED
DESIGN
IMPLEMENTATION
SYSTEM
TESTING
ACCEPTANCE
VESflNG
MAINTENANCE
AND
OPERATION
DETAILED DESIGN —
•RELEASE N
IMPLEMENTATION -
RELEASE N
SYSTEM
TESTING —
RELEASE N
ACCEPTANCE
TESTING —
RELEASE N
dOR-
BUILDS
UNIT COOE. TEST. ANO
INTEGRATION —
BUILD M
•NOTE: SeeBuilds and Releases in Section 2 for guidance on the number if
builds/release* appropriate to projects of varying size and complexity
"NOTE: A build design review (BDR) 13 held for every build except the tirsi.
Figure 7-2. Phases of the Life Cycle Are Repeated for Multiple Builds and Releases
KEY ACTIVITIES
Although the activities of coding, code reading, unit testing, and
integrating a single module are conducted sequentially, the
development team implements each module in parallel with others.
Unless the project is very small, the developmeni team is partitioned
into multiple groups during the implementation phase. Each group
is assigned to develop one or more subsystems, and group members
are each assigned one or more modules. During a given build, the
group will code, read, and test the modules of its subsystem that are
scheduled for the build. Therefore, coding, code reading, unit
testing, and module testing activities may be conducted
simultaneously at any given time.
During the implementation phase, the application specialists in the
development team do not code and test units. Instead, they apply
their expertise by reading the code of selected units (such as those
with complex, application-specific algorithms) and inspecting unit
and module test results. They also prepare the system test plan.
The key technical and managerial activities of the implementation
phase are summarized below and shown on a timeline in Figure 7-3.
110
Section 7 - Implementation
Activities of the Development Team:
• Code new units from the detailed design specifications and
revise existing units that require modification. Code units so
that each PDL statement can be easily matched with a set of
coding statements. Use structured coding principles and local
coding conventions (References 22 and 23). Prepare the
command language (e.g., JCL or DCL) procedures needed to
execute the units.
r.
f DEFINITION
1
Coda reading is a systematic procedure
for inspecting and understanding source
code in order to detect errors or
recommend improvements. It is
described in detail in this section under
METHODS AND TOOLS. Certification is
a part of the quality assurance process
wherein an individual signs a checklist
or form as an independent verification
that an activity has been successfully
^completed.
r
r
NOTE
"\
See METHODS AND TOOLS
in this section for more
detailed information on
coding standards and unit
testing. Test plans —
analytic test plans, build test
plans, and the system test
plan — are described under
PRODUCTS.
Read new and revised units. Ensure that
each unit is read by a minimum of two
members of the development team who are
not the unit's authors. Correct any errors that
are found, reinspecting the unit as necessary.
Certify all unit code.
Test each unit and module. Prepare unit test
procedures and data, and conduct unit tests. If
the acceptance test team has provided an
analytical test plan for the unit, complete the
test cases specified in the plan and verify that
the computational results are as expected.
Have an experienced member of the
development team review and certify all unit
test procedures and results.
Integrate logically related units into modules
and integrate the modules into the growing
build. Define and run enough tests to verify
the I/O generated by the module and the
interfaces among units within the module.
Ensure that the results of module testing are
reviewed and certified.
r
r
NOTE
~\
On most projects, unit and module tests
need not be performed separately. As
more units for a particular module are
developed, they are unit tested in the
context of the units previously developed
within the module.
Units may be either executable or data.
On Ada projects, the module takes the
form of a package.
Plan and conduct build tests. Prepare the test
plan for the build, and complete the
preparation of command procedures and data
needed for build testing.
Ill
Section 7 - Implementation
REQUIREMENTS
DEFINITION
TEAM
SOFTWARE
DEVELOPMENT
TEAM
ACCEPTANCE
TEST TEAM
MANAGEMENT
TEAM
Resolve any remaining requirements issues and TBDs
Participate in BDRs
_w
Code new units and revise reused units
Read and certify new and revised units
Test and integrate each unit and module
Plan and conduct build tests
Conduct BDRs
Prepare the system test plan
Draft the user's guide
Prepare the analytical test plan
Refine the acceptance test plan
Record project history data; reassess schedules, staffing, resources
Organize and coordinate implementation groups
Control requirements changes; ensure quality
Direct BDRs
-ty
Update SDMP estimates
^r
Coordinate the transition to system testing
COR
STRR
■TIME-
Figure 7-3. Timeline of Key Activities in the Implementation Phase
112
Section 7 - Implementation
The load module (or executable image) for the build is created by
the project librarian. When the load module is prepared, execute
the tests specified by the test plan for the build. Ensure that all
output needed for test evaluation is generated. Record any
discrepancies between the results specified in the plan and actual
results.
Correct all discrepancies that are found. When the affected units
are repaired and tested, file a report of the changes with the
project librarian. The librarian ensures that the configured
libraries and test executables are updated with the revised units.
Rerun any tests that failed, and verify that all errors have been
corrected. When all build tests have been successfully
completed, prepare a written report of the test results.
Prepare the system test plan for use during the system testing
phase. Begin to develop the plan immediately after CDR, so that
it will be ready by the end of the phase. Prepare the command
procedures and input data needed for system testing.
Prepare a draft of the user's
guide, using sections of the
detailed design document (the
operations overview and design
description) as a foundation.
r
r
(note
NOTE
\
The format and contents of the
user's guide and system
description documents are
itemized under PRODUCTS in
Section 8.
1
See BUILD
DESIGN REVIEWS
in this section for
guidelines
covering the
review format and
content of BDRs.
Begin work on the system
description document by updating
data flow/object diagrams and
structure charts from the detailed
design document.
Conduct a BDR before every
build except the first (changes to
the design and/or build plan that
apply to the first build are covered
during the CDR). Ensure that all
design changes are communicated
to development team members,
users, and other participants.
Present the key points of the build
plan, making certain that all
participants understand their roles
in the build, the schedule, and the
interfaces with other groups or
activities.
113
Section 7 - Implementation
Activities of the Management Team
• Reassess schedules, staffing, training,
and other resources. At the beginning of
the phase, record measures and lessons
learned from the detailed design phase and
add this information to the draft of the
software development history. As
implementation progresses, use the size of
completed units to refine estimates of total
system size. Use measures of actual
resources expended and progress during
the implementation phase to update cost
and resource estimates. (See Measures
subsection and Reference 12.)
0
REUSE NOTE
fo
"\
Managers should make
frequent checks throughout the
design and implementation
phases to ensure that reuse is
not being compromised for
short-term gains in schedule or
budget. Managers must
actively promote the reuse of
existing software and stress
the importance of developing
software that is reusable in the
future.
Reestimate system size, effort required to complete, schedules,
and staffing each time a build is completed. Toward the end of
the implementation phase, update the SDMP with effort,
schedule, and size estimates for the remaining phases.
Organize and coordinate subgroups within the development
team. At the beginning of the phase, organize the development
team into small, three- to five-person groups. Assign each
group a cohesive set of modules to implement. Regardless of
the size of a module set, the same group should code and test the
units and the integrated modules. As much as possible, ensure
that the designer of a unit is also responsible for its coding and
verification.
Ensure that any new personnel joining the project during this
phase are adequately trained in the standards and procedures
being followed (including data collection procedures) and in the
development language and toolset. Make experienced personnel
available to direct new and/or junior personnel and to provide
on-the-job training.
Control requirements changes. Thoroughly evaluate the
impacts of any specification modifications received during this
phase. Report the results of this analysis to the requirements
definition team and the customer.
Ensure that customers and users of the system agree on the
implementation schedule for any specification modifications that
are approved. To minimize their impact on the build in
progress, schedule the implementation of new features for later
builds.
114
Section 7 - Implementation
• Ensure quality in processes and products. Make spot checks
throughout the phase to ensure adherence to configuration
management procedures, quality assurance procedures, coding
standards, data collection procedures, and reporting practices.
Configuration management procedures — especially change
control on the project's permanent source code libraries — are
critical during the implementation phase when the staff is at its
peak size and a large amount of code is being produced.
Monitor adherence to the build plan. Know at all times the
status of development activities and the detailed plans for
development completion.
Review the draft user's guide and system test plans. Participate
in the inspection of test results for each build and assist the
development team in resolving any discrepancies that were
identified.
• Direct all BDRs, and ensure that any issues raised during the
reviews are resolved.
• Coordinate the transition to the system testing phase. Staff
the system test team with application specialists, and include one
or two analysts to take responsibility for ensuring the
mathematical and physical validity of the test results. (This will
also guarantee that some analysts are trained to operate the
software before acceptance testing.) Assign a lead tester to
direct the system testing effort and to act as a final authority in
determining the success or failure of tests.
Ensure that the data and computer resources are available to
perform the steps specified in the system test plan. Inform
personnel of the configuration management and testing
procedures to be followed and provide them with the necessary
training.
At the conclusion of the phase, hold an informal system test
readiness review (STRR). Use this meeting to assess whether
the software, the system test team, and the test environment are
ready to begin testing. Assign action items to resolve any
outstanding problems and revise schedules accordingly.
Activities of the Requirements Definition Team
• Resolve any remaining requirements issues. If implemen-
tation is to proceed on schedule, all TBD requirements must be
115
Section 7 - Implementation
resolved early in the phase. If any requirements cannot be
defined because external, project-level information (e.g.,
spacecraft hardware specifications) is incomplete, notify upper
management of the risks and the potential impact to development
schedules. Obtain deadlines by which the missing information
will be supplied, and work with the development team to adjust
schedules accordingly. Prepare a plan to mitigate these risks and
reduce the possible schedule delays and cost overruns.
Ensure that changes to requirements that are of external origin
(e.g., changes to spacecraft hardware) are incorporated into
specification modifications without delay. Submit all
specification modifications to the management team for technical
evaluation and costing.
• Participate in ail BDRs. Warn the development team of
potential changes to requirements that could impact the design or
otherwise affect current or remaining builds.
Activities of the Acceptance Test Team
Complete the draft of the acceptance test
plan that was begun during the detailed
design phase. The draft should be
provided to the development team before
the start of system testing.
Prepare the analytical test plan. At the
beginning of a build, supply the
development team with the parts of the
analytical test plan that they will need
during the build to verify the results of
complex mathematical or astronomical
computations.
r
(
NOTE
\
A recommended outline of
the acceptance test plan is
provided under PRODUCTS
in Section 8.
METHODS AND TOOLS
The key methods and tools of the implementation phase are
Code reading
Unit testing
Module integration testing
Build testing
Configuration management
SENs
CASE
116
Section 7 - Implementation
1
The SEL. requires the use of
structured coding principles
and language-dependent
coding standards. SEL
coding standards are
documented in References
22 (Ada) and 23 (FORTRAN).
Reference 24 is one of the
many sources of information
on structured programming.
Each is discussed below.
Code Reading
The first step in the unit verification process is
code reading, a systematic procedure for
examining and understanding the operation of a
program. The SEL has found code reading to
be more cost effective in uncovering defects in
software than either functional or structural
testing and has formalized the code reading
process as a key implementation technique
(References 25 and 26).
Code reading is designed to verify the logic of
the unit, the flow of control within the unit, and
boundary conditions. It is performed before
unit testing, not afterwards or concurrently.
Only code that has compiled cleanly should be
presented for code reading.
r
0
NOTE
"\
.irjj
The SEL's recommendation that
at least two code readers
examine each unit stems from a
Cleanroom experiment
(Reference 3). This project
discovered that an average of
only 1/4 of the errors in a unit
were found by both readers.
That is, 75% of the total errors
found during code reading were
found by only one of the readers.
NOTE
\
Some compilers allow the user to
generate a cross-reference listing
showing which variables are used
in the unit and their locations.
Code readers should use such
listings, if available, to verify that
each variable is initialized before
first use and that each is
referenced the expected number
of times. Unreferenced variables
may be typos. _,
Every new or modified unit is read by two or
more team members. Each reader individually
examines and annotates the code, reading it line
by line to uncover faults in the unit's interfaces,
control flow, logic, conformance to PDL, and
adherence to coding standards. A checklist that
is used by code readers on SEL-monitored
projects is shown in Figure 7-4; its use fosters
consistency in code reading by ensuring that
the reader has a list of typical errors to look for
and specific points to verify.
The readers and the unit's developer then meet
as a team to review the results of the reading
and to identify problems that must be resolved.
They also inspect the test plan for the unit. If
errors have been discovered in the unit, the
reader who is leading the meeting (the
moderator) returns the unit to the implementor
for correction. The unit is then reexamined.
When all errors have been resolved, the
moderator certifies that the code is satisfactory
and signs the checklist. The implementor files
the certified checklist in the SEN for the unit.
117
Section 7 - Implementation
UNIT CODE INSPECTION CHECKLIST
Unit Name_
Task Number
Inspection Moderator.
_System_
_Build/Release
.Initial Inspection Date_
KEY INSPECTION QUESTIONS
1. Is any input argument unused? Is any output argument
not produced?
2. Is any data type incorrect or inconsistent?
3. Is any coded algorithm inconsistent with an algorithm
explicitly stipulated in PDL or in requirements/specifications?
Is any local variable used before it is initialized?
Is any external interface incorrectly coded? That is,
is any call statement or file/database access
incorrectly coded? Also, for an Ada unit, is any external
interface not explicitly referenced/with'd-in?
Is any logic path incorrect?
Does the unit have multiple entry points or multiple, normal
(non-error) exits?
4.
5.
6.
7.
[]
[]
[]
[]
[]
[]
ADDITIONAL INSPECTION QUESTIONS
8. Is any part of the code inconsistent with the unit design
specified in the prolog and PDL?
9. Does the code or test plan contain any unauthorized
deviations from project standards?
10. Does the code contain any error messages that might be
unclear to the user?
11. If the unit was designed to be reusable, has any hindrance to
reuse been introduced in the code?
ACTION ITEMS AND COMMENTS
(List on a separate sheet. Refer to questions above by number.)
INSPECTION RESULTS
1. If all answers to 1-11 were "No, " the unit's code passes. Check
here and sign below. L J
2. If there are serious deficiencies in the code (e.g., if more than one
key question was answered "Yes*) the author must correct the unit
design and the moderator must schedule a reinspection.
Scheduled date for reinspection:.
3.
If there are minor deficiencies in the code, the author must correct
the unit design and hold a followup meeting with the moderator.
Scheduled date for followup meeting:
Yes No Corrected
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[] [] []
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
Moderator's signature certifies that this unit meets all applicable standards and satisfies
its requirements, and that any identified deficiencies have been resolved (applicable at
initial inspection, followup meeting, or reinspection).
Moderator Signature:.
Date:.
Figure 7-4. Sample Checklist for Code Inspection
118
Section 7 - Implementation
Each member of the development team should be assigned units to
read. If only one or two developers are appointed to read all the
units, the other team members will lose an opportunity to gain
expertise and increase their understanding of the system.
The code reader for a particular unit should not be selected by the
unit's developer, but by the task leader. The choice of code reader
should be appropriate to the character, complexity, and criticality of
the unit. For example, units that contain physical or astronomical
calculations should be read by application specialists who are
familiar with the requirements and able to uncover analytical errors.
Likewise, control units that use operating system services should be
read by an operating system expert, and those that interface with a
DBMS should be examined by a database specialist.
Unit Testing
Unit testing is the second step in verifying the logic, functionality,
computations, and error handling of a unit. The intent of unit testing
is to confirm that the unit provides the capability assigned to it,
correctly interfaces with other units and data, and is a faithful
implementation of the unit design.
In general, the developer who coded the unit executes the tests
identified in the unit test plan; independent testers are not required
unless the unit must comply with stringent safety or security
requirements.
r
o
NOTE
\
rTfir
On projects employing the
Cleanroom methodology, no
testing is conducted at the unit
level. When a unit has been read
and certified, it is submitted to an
independent test team for
compilation, integration, and
functional testing. The tests that
are conducted are a statistically
selected subset of system tests.
The test plan should be tailored for the type of
unit being tested. Structural (path) testing is
critical for units that affect the flow of control
through the system. The test plan for such a
unit is generated by the developer from the
unit's design and should include a sufficient
number of test cases so that each logic path in
the PDL is executed at least once. For units
whose function is primarily computational, the
developer may execute an analytical test plan.
Analytical test plans are prepared by the
acceptance test team to assist developers in
verifying the results of complex mathematical,
physical, and astronomical calculations (see
Products). Units that are part of the user
interface are tested using yet another approach
— one that ensures that each of the user
options on the screen is thoroughly exercised.
119
Section 7 - Implementation
NOTE
When unit testing is complete, the test results
are reviewed by the developer's team leader or
application, specialist. The reviewer certifies
the completeness and correctness of the test.
That is, he or she checks the results against the
test plan to ensure that all logic paths have been
tested and verifies that the test results are
accurate. As with code reading, use of a
checklist is recommended to assist reviewers
and maintain consistency.
The unit test plan and test results are maintained in the SEN for the
unit. If extensive changes are made to the unit at a later time, the
unit code must be reread, and the unit must be retested and certified.
The management team determines the level of rigor in unit testing
that is most cost effective for the project. For example, in some
projects it may be more efficient to conduct testing at the module
level than to test individual units. Indeed, for Ada projects, unit
testing should generally be conducted within the context of the
module (i.e., Ada package).
Module Integration Testing
Developers integrate individual, tested units into modules, then
integrate these modules into the growing build. The method of
integration testing that is used should be appropriate to the design of
the system. Menu-driven systems, for example, lend themselves to
either top-down or thread testing (Figure 7-5). In contrast, systems
with complex, computational utilities may benefit from a bottom- up
approach. As in unit testing, integration test plans and results are
reviewed and certified by other members of the development team.
In the SEL environment, modules are verified using the existing,
previously tested build as a test bed. Units not yet implemented
exist in the module as stubs; that is, they contain no executable
instructions except to write a message that the unit was entered and
has returned control to the calling unit. This approach tests both the
module's integration into the growing system and the internal code
of the units that it comprises. Test drivers, which must themselves
be coded and tested, are thus eliminated, and higher-level modules
are exercised more frequently.
When a module has been integrated, tested, and certified, the
developer completes a component origination form (COF) for each
of the units in the module. This SEL form has a dual function. The
information provided on the form is stored in the SEL database and
\
The use of a symbolic
debugger can greatly
improve the efficiency of
unit testing. The output
generated by the symbolic
debugger is filed in the SEN
for the unit.
component
origination
form (COF)
120
Section 7 - Implementation
TOP-DOWN TESTING
1
THREAD TESTING
6
i
f
J*?
1
i
6 4
<^~i
j I Previously integrated unit9
Y /\ Unit* integrated this iteration
v Software stubs
Top-down testing integrates additional modules level by level. Thread testing
builds a single end-to-end path that demonstrates a basic functional capability,
then adds on to that.
Figure 7-5. Integration Testing Techniques
used to track system composition, growth, and change throughout
the project's life cycle. The form is also a key configuration
management tool for the project librarian, who uses the source file
information on the form to enter completed units into the project's
controlled software library.
Build Testing
After all modules in the build have been coded and tested, the
development team conducts build tests on the software in the
controlled library. The purpose of build testing is to verify that the
software provides the functionality required of the build and is a
correct implementation of the design. Build regression tests are also
conducted to ensure that functions provided by previous builds have
not been adversely affected by the new components.
Build tests are executed by selected members of the development
team following a formal build test plan (as described under Products
in this section). The project librarian builds the executable images of
the software from the tested modules in the configured library. The
testers generally use a test checklist or report form to record the
results of each test case as it is executed.
The results of tests are rigorously evaluated by developers,
application specialists, and the management team. Operational
difficulties, abnormal terminations, and differences between actual
121
Section 7 - Implementation
NOTE
and expected test results are recorded on special report forms.
These discrepancy reports are used to ensure that each problem that
is observed is resolved.
The development team locates the cause of each discrepancy and
corrects the appropriate units. For each logical change that is made
to controlled software, developers submit a change report form
(CRF). This SEL form is used to gather information about the
character of the changes made, their source, the effort required, and
the number of changes due to errors.
Configuration Management and SENs
During the implementation phase, adherence to
configuration management procedures
becomes critical. Source code is generally
placed under configuration control one module
at a time. When the units in the module have
been coded, tested, and certified, the developer
submits COFs for the units to the project
librarian. The librarian moves the units into
the project's configured source code libraries
and files the units' SENs. Any further
changes to these units must be approved by the
development team leader or designated
application specialist. The developer must
check out the appropriate SENs, update the
unit(s), fill out one or more CRFs, and update
and return the SENs to the project library.
Changes to configured libraries are made
solely by the project librarian, who replaces
configured units with the updated versions.
The project librarian maintains the central project library, adding to it
all documentation produced during the implementation phase: SENs
for completed units/modules, test plans and results for each build,
drafts of the user's guide and system test plan, and system
description information. The librarian also catalogs and stores
CRFs for any changes made to software under configuration
management, and files specification modifications and updates to
design documents.
The management of a project's controlled source code libraries can
be greatly facilitated by the use of an online configuration
management tool. In the flight dynamics environment, DECs Code
Management System (CMS) is used to manage software developed
discrepancy
reports
change report
form (CRF)
\
For largo system*, the number
of discrepancies that must be
rectified can be substantial.
Managers must track these
discrepancies, assign personnel
to resolve them, set dates for
resolution, and verify that all
discrepancies have been
corrected. Use of a tracking
tool, such as CAT (Reference
27) or a PC-based DBMS, makes
this task easier.
122
Section 7 - Implementation
language-
sensitive
editors
static code
analyzers
performance
analyzers
in the STL's VAX environment. PANVALET and CAT are used
for systems developed, operated, and maintained in the IBM
environment of the FDF (Reference 27).
Configuration management tools can be used to store all code, test
drivers, data, and executable images; to track changes from one
version to the next; and, most importantly, to provide access
control. CMS, for example, allows the developer or librarian to
reconstruct any previous version of a library element, tracks who is
currently working on the element, and maintains a record of library
access. With a configuration management tool, the project librarian
can readily maintain multiple versions of the system, called
baselines, each of which represents a major stage in system
development. Baselines are generally established for each build, for
system testing, for acceptance testing, and for operational use.
CASE
Use of CASE tools can yield significant benefits during the
implementation phase. The following tools are those that have been
found to be most beneficial in the SEL's development environment.
Language-sensitive editors, such as VAX LSE, provide language-
specific templates that help the programmer to enter and compile
code efficiently, to review resultant diagnostic messages, and to
correct errors — all within a single editing session. Debuggers
allow the developer to suspend execution of a program, locate and
correct execution errors, and return to program execution
interactively.
Static code analyzers, such as the VAX Source Code Analyzer
(SCA), the RXVP80 static analyzer, and the Static FORTRAN
Source Code Analyzer Program (SAP), provide cross-referencing
capabilities among source files. They allow the developer to locate
subprograms, variables, and data references and to answer
questions such as "in which units is variable X used?". Additional
functions provided by some analyzers include the display of call-
trees and the extraction of design information.
Performance analyzers (e.g., the VAX Performance and Coverage
Analyzer or Boole & Babbage's TSA/PPE) help the developer
examine the run-time behavior of software to locate inefficiencies
and bottlenecks. They collect data and statistics during the execution
of a program and can generate histograms, tables, and call-trees
from the data. Performance analyzers can also help locate portions
of the software that have not been executed during testing.
123
Section 7 - Implementation
r
(
NOTE
Compilation systems (e.g., Alsys' UNIX Ada
Compilation System or the VAX DEC/Module
Management System) automate and simplify
the process of building complex software
applications. Compilation systems access
source files in the program library and follow
the sequence of dependencies among the files
to automatically build the system from current
versions. This allows a developer or project
librarian to rebuild a system using only
components that were changed since the
previous system build. v
In the FDF, a tailored software development environment called
SDE gives developers access to a variety of tools and utilities. SDE
(Reference 27) integrates editors, compilers, and file allocators
under a single, menu-driven framework. It is a customization of
IBM's Interactive System Productivity Facility (ISPF) that provides
additional tools for the FDF environment. The basic ISPF
capabilities include a screen-oriented editor; utilities for file
allocation, copy, display, and code comparison; and both
foreground and background processing functions. Customization
has added such features as a file translation utility, a system tape
generator, specialized print utilities, and transfer functions for
software moving between the STL and FDF environments. SDE
also provides access to the PANVALET text management system, to
the PANEXEC library management system, to Configuration
Analysis Tool (CAT), to the RSL, and to source code analyzers.
compilation
systems
\
Ada code development and
compilation tools are
described under METHODS
AND TOOLS in Section 6.
Performance analyzers and
static code analyzers are also
discussed in Section 5.
software
development
environment
MEASURES
Many of the same measures used during detailed design continue to
be collected and analyzed during the implementation phase. In
addition, source code generation and the use of configured libraries
provide the manager with new yardsticks of system growth and
change.
Objective Measures
The following measures are collected during the implementation
phase:
• The number of units coded/read/tested versus the number
identified
• Requirements questions and answers, TBDs, and changes
• Estimates of system size, effort, schedule, and reuse
124
Section 7 - Implementation
• Staff hours
• Total CPU hours used to date
• Source code growth
• Errors and changes by category
Table 7-1 lists each measure, the frequency with which the data are collected and evaluated,
and the sources from which the data are obtained.
Table 7-1. Objective Measures Collected During the Implementation Phase
MEASURE
SOURCE
FREQUENCY
(COLLECT/ANALYZE)
DATA COLLECTION
CONTINUED
BEGUN
Staff hours (total and
by activity)
Changes (by category)
Changes (to source
files)
Computer use (CPU
hours and runs)
Errors (by category)
Requirements (changes
and additions to
baseline)
Requirements (TBD
specifications)
Requirements
(questions/answers)
Estimates of total SLOC
(new, modified, and
reused), total units,
total effort, and
schedule
SLOC in controlled
libraries (cumulative)
Status (units identified/
coded/code-certified/
test-certified)
Developers and
managers
(via PRFs)
Developers (via CRFs)
Automated tool
Automated tool
Developers (via CRFs)
Managers (via DSFs)
Managers (via DSFs)
Managers (via DSFs)
Managers (via PEFs)
Automated tool
Managers (via DSFs)
(The number of
completed units is also
reported by developers
via COFs and by
automated tools)
Weekly/monthly
By event/monthly
Weekly/monthly
Weekly/biweekly
By eventfmonthly
Biweekly/biweekly
Biweekly/biweekly
Biweekly/biweekly
Monthly/monthly
Weekly/monthly
Weekly/biweekly
(Status data differ from
those collected during
design phases)
125
Section 7 - Implementation
Evaluation Criteria
The number of units coded, code-certified, and unit-test-certified,
versus the total number of units to be implemented, are the measures
of development status collected during the phase. By tracking each
of these measures on a single graph, SEL managers can see whether
all activities are progressing smoothly and in parallel. Sudden
increases or convergences, such as those shown in Figure 7-6,
should raise a red flag. When the development team is under
pressure to meet schedules, code reading and unit testing can
become hurried and superficial. If time is not taken to verify each
unit properly, the effort needed to complete system testing will be
increased substantially.
In the SEL, the growth in the number of units in the project's
configured library is also tracked against the number of COFs. This
helps managers ensure that configuration management procedures
are being followed and that the data needed to track the origin and
types of system components are being collected.
Requirements TBDs and changes continue to be tracked during the
implementation phase. Because designing a system based on best
guesses can lead to extensive rework, a system should not pass
CDR with requirements missing. However, if major changes or
additions to requirements are unavoidable, the design of that portion
of the system should be postponed and presented in a BDR at a later
date. One corrective measure for late specifications is to split the
development effort into two releases, with the late specifications
included in the second release.
development
status
requirements
TBDs and changes
IMPLEMENTATION PHASE
Analysis: For most of the
implementation phase, code reading and
unit testing activities followed unit
coding at a steady rate. However, near
the end of the phase, nearly three times
the normal number of units were
completed in a single week (1). This
"miracle finish" was due to short cuts in
code reading and unit testing that were
taken in an effort to meet schedules.
Result: Project entered the system
testing phase with poor quality
software. To bring the software up to
standard, the system test phase took
100% longer than expected.
Figure 7-43. Development Profile Example
126
Section 7 - Implementation
estimates
r
(
NOTE
\
Section 6 of The Manager's
Handbook for Software
Development (Reference 12)
contains additional
information on the procedures
for reestimating system size,
cost, and schedule during the
implementation phase.
As implementation progresses, managers
can obtain more accurate estimates of the
total number of units and lines of code in the
system. They can use this data to determine
whether enough effort has been allocated to
complete development.
Managers can compute productivity rates to
further refine project estimates and to
compare the pace of implementation with
that of previous projects. Factors that
should be considered when measuring
productivity include the number of lines of
source code in configured libraries, the
number of units in the libraries, and the
number of completed pages of
documentation per staff hour.
staff hours
CPU usage
source code
growth
Staff hours are tracked throughout the phase. If more effort is being
required to complete a build than was planned, it is likely that the
remaining builds (and phases) will require proportionally more
effort as well. After investigating why the deviation has occurred,
the manager can decide whether to increase staffing or schedule and
can replan accordingly.
The profile of computer usage on any project is heavily dependent
on both the development process and environment. The manager
must use models of CPU usage from previous, similar projects for
comparison. In the flight dynamics environment, projects that are
developing AGSSs show a steep upward trend in CPU usage early
in the implementation phase. This trend continues during system
testing, but declines in acceptance testing, when testers conduct
extensive off-line analysis of numerical results.
CPU hours that differ substantially from the local model can be
caused by insufficient testing or by requirements changes that
necessitate redesign (Figure 7-7).
The amount of source code in the project's configured library is a
key measure of progress during the implementation phase. As with
CPU usage, the pattern of growth is heavily dependent on the
development process. On projects with multiple builds, periods of
sharp growth in configured SLOC will often be separated by periods
of more moderate growth, when the development team is engaged in
testing the build.
127
Section 7 - Implementation
*> to
WEEKS FROM SHH
Symptom: Computer usage
zero midway through imple-
mentation (1).
Cause: Redesign in response
to excessive requirements
changes instead of imple-
mentation.
Corrective Action: Replan
project based on new scope
of work (2).
Note: The local model is
shown in gray.
Figure 7-7. Example of CPU Usage — ERBS AGSS
Managers begin to track change and error data as soon as there are
units in the configured libraries. These data are usually graphed as
the cumulative number of changes or errors per thousand SLOC
over time.
Developers complete a CRF for each logical change made to the
software, recording which units were revised as a result of the
change, the type of change, whether the change was due to error,
and the effort required. This information is compared with change
data generated from the configuration management system (e.g.,
CMS) to ensure that the data are consistently reported.
The rate of software change is a key indicator of project stability.
Comparative models for change rates should be based on historical
data from earlier, similar projects. The SEL model, for example,
reflects a steady, even growth of software changes from the middle
of the implementation phase through the middle of acceptance
testing. Exaggerated flat spots in the graph or sudden jumps in the
change rate should always spur investigation. Excessively high
rates can result from requirements changes, inadequate design
specifications, or insufficient unit testing.
Error rates are generally at their highest level during the
implementation phase. Error rates in the system test phase should
be significantly lower, and should show a further decline during
acceptance testing. The SEL has found that error rates are reduced
by approximately half in each phase after implementation, and that
this decline is independent of the actual values involved. Higher
error rates than expected usually mean that the quality of the
software has suffered from inadequate effort at an earlier stage,
although such rates may also be found when the development
project is exceptionally complex.
change
and error
rates
128
Section 7 - Implementation
PRODUCTS
The key products of the implementation phase are
• System code and supporting data
• A set of build test plans and results
• The system test plan
• The analytical test plan
These products are discussed in the paragraphs that follow. In
addition, the development team generates a draft of the user's guide,
while the acceptance test team produces an updated version of the
acceptance test plan. Since both of these documents are finalized
during the next phase, they are described in detail in Section 8.
System Code, Supporting Data, and System Files
By the end of the last build, the project's configured libraries will
contain all the source code for the completed system (or release), the
control and command procedures needed to build and execute the
system, and all supporting data and system files.
Included in the supporting files are all input data sets needed for
testing. Appropriate test data are obtained or generated for each set
of build tests. By the end of the implementation phase, a full suite
of input data sets must be ready for use in system testing. If testing
is to be effective, these test data must be realistic. Test data are
created using a simulator or data generation tool or by manual data
entry. Input data for complex calculations are provided to the
development team with the analytical test plan (see below).
Build Test Plans
r
r
RULE
1
Effective testing depends on the timely
availability of appropriate test data.
The software management team must
ensure that the activity of test data
generation is begun well in advance of
testing so that neither schedules nor
testing quality are compromised
because of deficient data.
The use of a formal test plan allows build
testing to proceed in a logically organized
manner and facilitates agreement among
managers and developers as to when the
testing is satisfactorily completed. The
development team prepares the test plan
for the first build before the end of the
detailed design phase. The test plan for
each subsequent build is prepared before
the beginning of implementation for the
build, and highlights of the plan are
presented at the BDR.
129
Section 7 - Implementation
Build test plans follow the general outline shown in Figure 7-8.
Build test plans should always identify a set of build regression tests
key tests that can be rerun to ensure that capabilities previously
provided remain intact after corrections have been made or a new
build has been delivered.
System Test Plan
The system test plan is the formal, detailed
specification of the procedures to be followed
while testing the end-to-end functionality of
the completed system. This test plan follows
the same general pattern as the build and
acceptance test plans (Figure 7-8). It is
reviewed by the system test team and the
management team prior to the STRR.
r
f NOTE
\
\r\
The system test plan must be designed to
verify that the software complies with all
requirements and specifications. It should
concentrate on the user's view of the system
and should probe for any weaknesses that
might not have been uncovered during build
testing.
The testing prescribed by the plan should be functional rather than
structural. In functional testing, the system is treated like a black
box. Input is supplied and the output of the system is observed.
The system test plan identifies the functional capabilities specified in
the requirements and specifications and prescribes a set of input
values that exercise those functions. These inputs must include
boundary values and error conditions as well as the main processing
stream.
In the Cleanroom methodology,
tests are statistically selected
from a hierarchy of possible
user operations. Build tests are
scaled-back versions of system tests,
with input restrictions. Because test
cases are based on the expected use of
the system, continuous feedback on the
reliability of the software is obtained
with each build test.
System tests should cover multiple
operational scenarios, not merely the
nominal case (e.g., when the
spacecraft is at a particular attitude
and orbit position). The test plan
must include tests designed to ensure
that interfaces among subsystems are
thoroughly demonstrated, as well as
tests that challenge the robustness of
the system by examining its
performance under load and its
response to user or data errors.
r
flMOTE
( NOTE
\
Testing tools, such as the
DEC/Test Manager, can
help the development team
to create and organize test
descriptions and scripts
efficiently.
See Section 8 for
more information
on the activites,
methods, tools,
and products of
system testing.
130
Section 7 - Implementation
TEST PLAN OUTLINE
The recommended outline for build, system, and acceptance test plans is given below.
Interdependencies among tests should be minimized to allow testing to proceed while failures are
analyzed and corrected.
1. Introduction
a. Brief overview of the system
b. Document purpose and scope
2. Test Procedures
a. Test objectives — purpose, type, and level of testing
b. Testing guidelines — test activity assignments (i.e., who builds the executables and who
conducts the tests), test procedures, checklists/report forms to be used, and configuration
management procedures
c. Evaluation criteria — guidelines to be used in determining the success or failure of a test
(e.g., completion without system errors, meets performance requirements, and produces
expected results) and the scoring system to be followed
d. Error correction and retesting procedures, including discrepancy report forms to be
completed (see Section 8)
3. Test Summary
a. Environmental prerequisites — external data sets and computer resources required
b. Table summarizing the system or build tests to be performed
c. Requirements trace — matrix mapping the requirements and functional specifications to
one or more test items
4» Test Descriptions (Items a to f are repeated for each test)
a. Test name
b. Purpose of the test — summary of the capabilities to be verified
c. Method — step-by-step procedures for conducting the test
d. Test input
e. Expected results — description of the expected outcome
f. Actual results (added during the testing phase) — description of the observed results
in comparison to the expected results
5. Regression Test Descriptions (Repeat items 4a to 4f for each regression test)
Figure 7-8. Generalized Test Plan Format and Contents
System test plans must specify the results that are expected from
each test. Plans should refer to specific sections of the requirements
and specifications if these documents already contain expected
results. Where possible, each test should be defined to minimize its
dependence on preceding tests, so that the testing process can adapt
to inevitable, unplanned contingencies.
regression ^ne svstem test plan must also define the set of regression tests that
tests w^ be usec* t0 ensure that changes made to software have had no
unintended side effects. The regression test set should be short
enough to be actually used when needed, yet should exercise a
131
Section 7 - Implementation
r
(
NOTE
r.
(
NOTE
maximum number of critical functions. As a
rule of thumb, select the key 10 percent of the
total number of tests as the regression test set.
Analytical Test Plan
In the flight dynamics environment, an
additional analytical test plan is generated
during the implementation phase to assist
testers in verifying the results of complex
mathematical and astronomical algorithms.
The analytical test plan is produced by
members of the acceptance test team and is
provided to the development team in two
phases. Test procedures for verifying
computations that are performed at the unit
level are delivered before the start of the build
containing the relevant units. The second
portion of the analytical test plan, which
contains tests of end-to-end functionality, is
provided to developers before the start of
system testing and is executed along with the
system test plan.
Analytical test plans are only useful to the development team if input
data and output results are explicitly specified. Ideally, test data sets
containing analytically robust, simulated data should be supplied to
the development team with the plan. The test plan must itemize the
expected, numerical input and output for each test as well as any
intermediate results that are needed to verify the accuracy of
calculations.
\
See METHODS AND TOOLS
in Section 8 for additional
information on regression
testing.
\
tf a complete analytical test plan is
available early in the implementation
phase, the system test plan can be
written to incorporate the analytical tests.
Otherwise, the analytical test plan is
conducted in parallel with the system test
plan. In the latter case, the test team
must work to efficiently coordinate both
sets of tests, minimizing the effort spent
in setup, execution, and analysis.
BUILD DESIGN REVIEWS
Reviews are recommended for each build. At BDRs, the
development team and its managers cover important points of
information that need to be transmitted before the next phase of
implementation. Such information includes any changes to the
system design, the contents of the build, and the build schedule.
The focus of a BDR is on status and planning. Strategies for han-
dling TBDs, risk-management plans, and lessons learned from
previous builds should also be covered.
132
Section 7 - Implementation
Presenters
BDR FORMAT
• software development team
Participants
• Requirements definition team
• Acceptance test team representatives
• Quality assurance representatives
• Customer interfaces
• User representatives
• System capacity/performance analysts
Attendees must be familiar with the project background, requirements,
and design.
Schedule — before implementation of each build of a system or release,
except the first
Agenda — presentation of changes to the detailed design of the system
and to the build plan, emphasizing lessons learned in previous builds and
risk mitigation strategies
Materials — distributed a minimum of 3 days before the review.
Figure 7-9. BDR Format
The formality of the review depends on the size and complexity of
the project. Large projects may find that a slide presentation and
hardcopy handouts are necessary. On smaller projects, developers
may simply meet with analysts, customers, and users around a
conference table.
A synopsis of the BDR format is shown in Figure 7-9, and a sug-
gested outline for the contents of BDR materials is provided in
Figure 7-10. If a formal presentation is made, the materials
distributed at the review should be hardcopies of the presentation
viewgraphs or slides.
EXIT CRITERIA
At the end of the final build, the software development manager should
answer the following questions:
• Have all components of the system passed each stage of
verification, inspection, and certification? Are all components
organized into configured libraries?
• Have all build test plans been completed? Have all critical
discrepancies been resolved successfully?
133
Section 7 - Implementation
• Has the system test plan been completed and reviewed? Are data
files and procedures in place for system testing?
• Are documentation products complete? That is, have all SENs
been checked and systematically filed in the project library? Is
the draft of the user's guide ready for evaluation by the system
test team?
When the manager can comfortably answer "yes" to each question,
the implementation phase is complete.
MATERIALS FOR THE BDR
1. Agenda — outline of review material
2. Design changes since CDR or the previous BDR (with justifications)
a. Revised design diagrams . .
b. Changes to system operation; updated operations scenarios/scripts, displays, reports,
and screens
3. Build contents
a. Requirements to be met in the build
b. Units and data objects to be included in the build
c. Unresolved problems in earlier builds to be resolved in this build
4. Testing strategy — sequence of build tests, test data, drivers/simulators, etc.
5. Changes to remaining builds and releases
a. Changes in the distribution of requirements among remaining builds/releases
b. Changes in the distribution of software units and data objects
6. Updated software size estimates
7. Milestones and schedules
a. Schedule for implementing and testing the current build
b. Schedule for the remaining builds/releases
& Issues, risks, problems, TBD Herns
a. Review of any remaining TBDs
b. Risks associated with the build
Figure 7-10. BDR Materials
134
Section 8 - System Testin
CYCLE
PHASES
REQUIREMENTS
DEFINITION"
REQUIRE-
MENTS
ANALYSIS
PRELIMI-
NARY
OESKjN
DETAILED
DESIGN
IMPLEMENTATION
SYSTEM
TESTING
ACCEPTANCE
v testing; i¥
SECTION 8
THE SYSTEM TESTING PHASE
PHASE HIGHLIGHTS
••■ ■ •■■■'•ffiri
ssss
nflni i I'll i "iriinl"i inn r n i
ENTRY CRITERIA
• All system code and supporting data
generated and tested
• Build test plans successfully executed
• System test plan completed
• User's guide drafted
WmWs
fmwf^wffwnw
EXIT CRITERIA
• System and analytical test plans
successfully executed*
■ Acceptance test plan finalized
• User's guide and system description completed
• Configuration audits and ATRR conducted
PRODUCTS
• Tested system code and
supporting files
• System test results
• User's guide
• System description document
• Acceptance test plan
WMMiM™»w™»»^^^
w
w$mmmmmm®mmmm'v- »
KEY ACTIVITIES
'aV4i
MEASURES
• System tests planned/executed/passed
• Discrepancies reported/resolved
• Staff hours
• CPU hours
• SLOC in controlled libraries (cumulative)
• Changes and errors (by category)
• Requirements Q&As, TBDs, and changes
• Estimates of system size, effort,
schedule, and reuse
MmmMMlMMitKWMES
METHODS AND TOOLS
• System test plan
• Regression testing
• Configuration management
• Configuration audits
• Test tools
• Test logs
• Discrepancy reports
•IV&V
|< System Test Team
• Prepare for system testing*
• Execute all items in the system and
analytical test plans
• Analyze and report test results
• Control the testing configuration
• Evaluate the user's guide
■Conduct an ATRR
Development Team
§U • Correct discrepancies found during testing
• Tune system performance
• Complete system documentation
|| • Identify candidates for the RSL
• Prepare for acceptance testing
Management Team
• Reassess schedules, staffing, and resources
• Ensure the quality and progress of testing
• Control requirements changes
• Conduct configuration audits
• Coordinate the transition to acceptance
testing
Acceptance Test Team
• Finalize the acceptance test plan
• Prepare for acceptance testing
■WMiSi'MliMW'-
M
i
wmmmmmmmmmmmm
jVyVV ' ' ' ^
WAWWWftMWMWSwaWaWBMBSBaBBBSiBWBSJMW
i
* In the Cleanroom methodology, there is no separate system testing phase. All testing
is conducted by an independent test team in parallel with software development activities.
Test cases are generated statistically based on operational scenarios.
:"&">*&&
Miiiifiiiiiiiitibiiiiliihiiiii^^
^^j;^
135
Section 8 - System Testing
OVERVIEW
The purpose of the system testing phase is to verify the end-to-end functionality of the
system in satisfying all requirements and specifications.
During this phase, the system test team executes the tests specified in the system and
analytical test plans. The results obtained during test execution are documented, and the
development team is notified of any discrepancies. Repairs to software are handled by
members of the development team in accordance with stringent configuration management
procedures. Corrected software is retested by the system test team, and regression tests are
executed to ensure that previously tested functions have not been adversely affected. (See
Figure 8-1.)
NOTE: See KEY ACTIVITIES for more detailed descriptions of the processes in this diagram
Figure 8-1. System Testing
136
Section 8 - System Testing
During the system testing phase, the software development team
prepares the documentation for the completed system. The user's
guide is evaluated and an updated version is published by the end of
the phase. The development team also records the final design of
the system in a system description document.
System testing is complete when all tests in both the system test and
analytical test plans have either executed successfully or have been
waived at the authorization of the customer. Near the end of the
phase, the system and its documentation are audited for
completeness. The system is then demonstrated to the acceptance
test team and an acceptance test readiness review (ATRR) is held to
determine whether the system test phase can be concluded and the
acceptance test phase begun.
KEY ACTIVITIES
System tests are planned and executed by a subset of the
development team that includes the application specialists. In the
flight dynamics environment, one or more analysts are added to the
system test team to ensure the mathematical and physical validity of
the test results. They also learn to operate the software in
preparation for acceptance testing.
r
(
NOTE
\
When reliability requirements
are particularly stringent,
system testing may be
conducted by an independent
test team. See METHODS
AND TOOLS for more
information on independent
verification and validation
(IV&V) procedures.
The senior application specialist is usually
designated as the leader of the system test
team. He or she is responsible for ensuring
that test resources are scheduled and
coordinated, that the appropriate test
environment is established, and that the
other members of the team understand the
test tools and procedures. During testing,
this leader directs the actions of the team,
ensures that the test plan is followed,
responds to unplanned events, and devises
workarounds for failures that threaten the
progress of testing.
The key activities of the system test team,
the development team, the management
team, and the acceptance test team are
summarized in the paragraphs that follow.
A suggested timeline for the performance of
these activities is given in Figure 8-2.
137
Section 8 - System Testing
SYSTEM TEST
TEAM
SOFTWARE
DEVELOPMENT
TEAM
ACCEPTANCE
TEST TEAM
MANAGEMENT
TEAM
Prepare for system testing
jy
Execute test cases in the system and analytical test plans
Analyze and report test results
__3j7'
Evaluate the user's guide
Conduct regression tests
Prepare and conduct the ATRR
Prepare the system description
Isolate and correct software discrepancies
Tune system performance
Update the user's guide
Identify candidates for the RSL
Review the acceptance test plan
Prepare for acceptance testing
Participate in the ATRR
Deliver draft of the acceptance test plan
Finalize the acceptance test plan
&
Prepare for acceptance testing
Participate in the ATRR
*W
Record project history data; reassess schedules, staffing, resources
Ensure progress, quality, and completeness of system testing
Update SDMP estimates
Coordinate the transition to acceptance testing
^
Conduct configuration audit:
Direct the ATRR
STRR
ATRR
-TIME"
Figure 8-2. Timeline of Key Activities in the System Testing Phase
138.
Section 8 - System Testing
Activities of the System Test Team
Prepare for system testing. Establish the system test
environment. System testing generally takes place on the
development computer rather than the eventual operational
computer; however, it may be necessary to rehost the system to
the target computer if there are critical performance
requirements. Ensure that any test tools that will be used are
available and operational.
Ensure that computer resources and operations personnel are
scheduled and available. Resolve resource conflicts early; they
can seriously affect schedules, particularly when real-time
testing is involved.
Effective testing depends on the timely availability of appropriate
test data. Collect and use real data for testing whenever
possible. When real data cannot be obtained, generate and use
simulated data. Before testing is begun, ensure that all test data
and command and parameter files (e.g., JCL and NAMELISTs)
are physically reasonable, reliable, and analytically robust.
Maintain test data and control files under configuration
management.
r
(
RULE
1
A developer should not be asked
to system test his or her own code.
Developers on the system test
team should test sections of the
system implemented by members
other than themselves.
Execute all test items in the system and
analytical test plans, running the
regression test set each time a replacement
load module is installed. Follow the
procedures prescribed in the test plan.
Keep printed output for each test execution
and maintain a test log so that events can be
accurately reconstructed during post-test
analysis. Document any discrepancies
between expected and actual test results.
The amount of diagnostic output generated
during testing can either help or hamper
analysis. Tailor diagnostics and debug
output to the test and analysis approach so
that errors can be isolated expeditiously.
Analyze and report test results. Test results must be analyzed
and interpreted to determine if they correspond to those that were
expected. Where possible, use automated tools in the analysis
process. Keep good records of analysis procedures and retain
all relevant materials.
139
Section 8 - System Testing
r
(
NOTE
Determine whether discrepancies are
caused by software or by incorrect
operations. Rerun any tests that failed
because of errors in data, setup, or
procedures as soon as these have been
corrected. When software is implicated,
report the problem using discrepancy
report forms. Discrepancy reports are
reviewed by the management team and ^
assigned to members of the development
team for correction.
When all system tests are complete, compile a final report
documenting the results of testing in both detailed and summary
form. Address any problems encountered and their solutions.
Control the testing configuration. System testing must yield
reproducible results. Moreover, when test results do not match
those that are expected, it must be possible to vary the input
parameters to find those to which the unexpected results are
sensitive. During this process, the exact system configuration
must be kept constant.
To reduce the possibility of configuration errors, only the project
librarian should change configured source libraries and build the
executable image that will be used during system testing.
Evaluate the user's guide. Employ the user's guide during test
preparation and execution. Annotate a copy of the guide, noting
any errors or discrepancies between the information it contains
and actual operational conditions. Suggest ways in which the
clarity and usability of the guide could be improved.
Conduct an ATRR. Meet with management, customers, and
members of the acceptance test and development teams to assess
the results of system testing and the state of preparations for
acceptance testing. Identify and discuss any outstanding
problems that may impose technical limits on the testing or may
affect schedules. The system test and development teams must
be certain that the system is complete and reliable before it is sent
to the acceptance test team.
\
The results of system testing
are often published in the
same volume as the system
test plan. See PRODUCTS
below and in Section 7 for
guidance in reporting test
results.
140
Section 8 - System Testing
r
r
RULE
\
When completing a CRF form, be
sure to correctly note the original
source of an error. Changes to code
may be caused by incorrect require-
ments and specifications or by
design errors. Such changes should
not be labelled as code errors, even
though code was revised.
r
fNOTE
\
The contents of the user's
guide, system description,
and acceptance test plan are
discussed under the
PRODUCTS heading in this
section.
Activities of the Development Team
• Correct discrepancies found during
testing. Assist the test team in isolating
the source of discrepancies between
expected and actual test results. If the
error is in the software design, thoroughly
analyze the ramifications of any design
changes. Update the affected design
diagrams and structure charts before
proceeding with corrections to code.
Verify all corrections using code reading,
unit testing, and integration testing.
Update the SENs for the revised units and
fill out a CRF describing the
modifications.
• Tune the performance of the system.
Analyze the performance of the system,
using tools such as the VAX Performance
and Coverage Analyzer or TSA/PPE (see
Methods and Tools, Section 7). Locate
and correct any botdenecks found.
Complete the system documentation. Update the user's
guide, correcting any errors that were found by the system test
team and incorporating the team's recommendations for
improving the document's quality. Ensure that the user's guide
reflects any modifications to software or operational procedures
that are made as a result of system testing. Deliver the updated
version of the guide to the acceptance test team at the ATRR.
Complete the system description. Update the draft begun during
the implementation phase so that the document reflects the final
state of the system. By the end of the system testing phase,
deliver the completed draft to the acceptance test team.
Identify candidates for the RSL. If reuse has been a
determinant in the system design, decide which of the final
software components are sufficiently generalized and robust to
be candidates for the RSL. Also identify any nongeneric
components that could be reused in similar systems. Document
this analysis and forward the candidates for inclusion in the
RSL.
141
Section 8 - System Testing
• Prepare for acceptance testing. Review the draft of the
acceptance test plan. Ensure that the plan tests only what is in
the requirements and specifications document. Any additional
performance tests or tests that require intermediate results not
specified in the requirements must be negotiated and approved
by the management team.
Work with acceptance testers to obtain the computer resources
needed for acceptance testing and to prepare the necessary input
data sets and command procedures (JCL/DCL). If the system
will be operated in an environment that is different from the
development environment, rehost the system to the target
computer. Demonstrate the system to the acceptance test team
and participate in the ATRR.
Activities of the Management Team
• Reassess schedules, staffing, and resources. At the
beginning of system testing, record measures and lessons
learned from the implementation phase and add this information
to the draft of the software development history. Use measures
of effort and schedule expended to date to reestimate costs and
staffing levels for the remainder of the project.
• Ensure the quality and progress of system testing.
Coordinate the activities of the system test and development
teams, and ensure that team members adhere to procedures and
standards. Place special emphasis on enforcing configuration
management procedures; the control of software libraries is
critical during the system and acceptance testingphases.
On a weekly basis, analyze
summaries of testing progress and
examine plots of test discrepancies.
Ensure that the development team
corrects software errors promptly so
that testing does not lose momentum.
Assist developers in resolving
technical problems when necessary.
Ensure that error corrections are
thoroughly tested by the
development team before revised
software is promoted to controlled
libraries for regression testing.
Review all test results and system
documentation.
NOTE
1
The key to success in system
testing is the system test plan.
A complete and detailed
system test plan results in a
precise understanding of the
functionality that the tester
needs to verify, and provides
an easy tracking mechanism
for monitoring weekly testing
status.
142
Section 8 - System Testing
Control requirements changes. Although requirements
changes are not frequent this late in the life cycle, when they do
occur, the same formal recording mechanisms (i.e.,
requirements question-and-answer forms and specification
modifications) are used as in preceding life cycle phases.
Challenge any specification modifications that are received after
the beginning of system testing. In general, new specification
modifications that add requirements or enhance the system
should not be accepted unless they are critical for mission
support. Moreover, unless mission-critical changes can be
incorporated with little or no impact to budget and schedule, they
should be scheduled into a later release or implemented during
maintenance and operations.
r
(
NOTE
\
See METHODS AND TOOLS
for the specific procedures to
be followed in conducting
configuration audits.
Conduct configuration audits. When
system testing is complete, select one or
more quality assurance personnel or
developers to audit the system
configuration. Determine if test records
demonstrate that the system meets all
requirements and functional specifications,
and verify that the system documentation
completely and accurately describes the
actual software in controlled libraries.
Develop action items for the solution of
any problems found.
Coordinate the transition to the acceptance testing phase and
direct the ATRR. Designate the developers and application
specialists who will provide support to the acceptance test team
during the next phase. They will be responsible for setting up
and running tests with members of the acceptance test team
present. Supervise demonstrations of the system for the benefit
of the acceptance test team.
Schedule the ATRR. Ensure that appropriate representatives
attend and that the agenda covers any and all issues that could
affect the success of acceptance testing. Make certain that all
members of both the acceptance test and development teams
understand and approve the procedures that will be followed
during testing. Assign action items resulting from the meeting
and oversee their resolution.
143
Section 8 - System Testing
Activities of the Acceptance Test Team
• Finalize the acceptance test plan. At the start of the system
test phase, provide the development team with a draft of the
acceptance test plan. Update and complete the plan during the
remainder of the phase.
• Prepare for acceptance testing. Prepare all test data, control
language (JCL/DCL), and parameter files needed for testing.
Generate or request any simulated data that will be needed.
Verify test data for completeness and accuracy, and place them
under configuration management.
Schedule the resources needed for testing, including personnel,
terminals, and disk space. Optimize resource usage and avoid
conflicts; careful scheduling is crucial to testing success.
Attend the system demonstrations conducted by the development
team. Practice running the system with developer support.
Participate in the ATRR.
METHODS AND TOOLS
The key methods and tools of the system testing phase are
The system test plan
Regression testing
Configuration management
Configuration audits
Test tools
Test logs
Discrepancy reports
IV&V
The system test plan, which is the primary "tool" used during the
phase, is a product of the implementation phase and was discussed
in Section 7. The other methods and tools in this list are elaborated
in the paragraphs that follow.
Regression Testing
Regression testing is the testing that must be performed after
functional improvements or corrections have been made to the
system to confirm that the changes have created no unintended side
effects. Regression testing is an essential element of build and
acceptance testing as well as of system testing. In the
144
Section 8 - System Testing
r
(
NOTE
"I
For more information on how to
select a regression test set, see
the description of the system
test plan in Section 7 and the
discussion of the acceptance
test plan under the PRODUCTS
heading in this section.
implementation phase, build regression tests are
run to ensure that a new build has not impaired
the functioning of previous builds. During
system and acceptance testing, regression tests
are conducted by the test team each time the
load module is replaced. These regression tests
are a selected subset of the full set of system or
acceptance tests, and are specified in the test
plan.
Regression tests also help assure that
configuration management procedures are
followed. If regression tests reveal that an
outdated or untested unit or module was
included in the test configuration, the
management team should immediately
investigate to determine which configuration
management procedures (described below)
were violated.
Configuration Management
During the system test phase, strict adherence to configuration
management procedures is essential. Because the software is under
configuration control at this time, any changes to the code in the
permanent source code libraries must be made according to
established procedures and recorded on CRFs. Configuration
management procedures must ensure that the load modules being
tested correspond to the code in the project's libraries.
During system testing, configuration management problems can be
avoided by following certain basic principles:
• Limit update access to controlled libraries and restrict rebuilding
of test configurations to a single configuration manager (usually
the project librarian). Whenever possible, use automated tools,
such as CMS control lists, to enforce this restricted access.
• Periodically rebuild the test configuration from the controlled
source code, eliminating lower-level working libraries, so that
the system test team can start from an updated, configured
system on each round of testing. If possible, use a two-level
library structure. The top level contains the official system test
executable image built from source code in the controlled library;
all system testing is performed from this library. The lower-
level library is used by developers for testing changes when
system tests have failed. When developers' changes are
145
Section 8 - System Testing
TAILORING NOTE
promoted into the controlled source code,
the top-level library is rebuilt and the
lower-level library is emptied. Failed tests
are then rerun by the test team from the top
level.
• Restrict the frequency with which new
load modules/executable images are
constructed to minimize the amount of
regression testing that must be conducted. ^
A new load module can be built whenever N
a predetermined number of changes to the
controlled source have been made or can
be scheduled on a regular basis, e.g.,
every two weeks.
SENs must also be updated to reflect changes made to source code
during this phase. The developer obtains the SENs from the project
librarian before correcting the software and returns them, along with
the CRF(s), when changes are completed. The project librarian
checks each returned SEN to ensure that the required checklists and
listings have been included.
Configuration Audits
After system testing is complete, configuration audits are performed
to confirm that the system meets all requirements and specifications,
that it is accurately described in the documentation, and that it does
not include any unauthorized changes.
In the functional configuration audit (FCA), selected staff members
spot-check the system test results against the expected results in the
test plan(s) to determine if the tests were performed properly and
completely. They also examine all waivers, verifying that any
uncorrected discrepancies have been reviewed and approved by the
customer.
When the FCA is complete, the auditors provide a list of the items
they examined and their findings to the management team, along
with their assessment of the readiness of the system for acceptance
testing.
In Hie physical configuration audit (PC A), auditors compare the
design of the system (as documented in the system description and
SENs) against listings of the software in configured libraries to
verify that these descriptions match the actual, tested system. The
auditors also check the user's guide against the system description to
\
On Ada projects, management
of a third library, the Ada
compilation library, is critical to
keeping a controlled system
configuration. When updated
source code is promoted to
controlled libraries, the compila-
tion library must be rebuilt
before the new executable
image is constructed.
FCA
PC A
146
Section 8 - System Testing
r
(
RULE
\
The staff members selected to
conduct the FCA should not have
implemented or tested the
system being audited.
Developers, QA, or CM personnel
may conduct the PCA.
ensure the two documents are consistent. In a
report to the management team, they summarize
their activities, list the items audited, itemize any
conflicts found, and recommend action items.
Test Tools
Many of the automated tools used to facilitate the
implementation of the system continue to be
employed during the system testing phase.
These tools — configuration management
systems, symbolic debuggers, static code
analyzers, performance analyzers, compilation
systems, and code-comparison utilities — are
discussed in Section 7.
r
(
NOTE
1
The system test plan must
describe the specific
procedures to be followed in
recording and evaluating
system tests and while
correcting test discrepancies.
The contents of the system
test plan are discussed under
PRODUCTS in Section 7.
In addition, test management tools (e.g.,
DEC/Test Manager) can provide an online
mechanism for setting up the test environment,
for testing interactive applications in batch
mode, and for regression testing. Use of such a
tool allows testers to examine test result files
interactively and to generate summary reports of
test runs automatically.
Test Logs
The test log is an ordered collection of the indi-
vidual report forms or checklists that are com-
pleted by testers during actual test execution.
Use of a standard test report form or checklist is essential to the
accurate recording of test results. Each report form should identify
the test, the tester, the load module/executable image being tested,
and the date and time of testing. The form should provide space to
summarize the test case and to record whether the test results
matched those expected. If a discrepancy is found, it is noted on the
form and described in detail in a discrepancy report (see below).
Discrepancy Reports
Testers fill out a discrepancy report form for any errors that they
uncover that could not be immediately traced to an incorrect test
setup or operational mistake. Discrepancy reports are also known as
software problem reports (SPRs), software trouble reports (STRs),
or software failure reports (SFRs). A sample SFR form is shown in
Figure 8-3.
147
Section 8 - System Testing
SOFTWARE FAILURE REPORT
Originator
SFR#:
Test ID:
.Location:.
_Date:
.Phone:.
Time:
.Subsystem:.
Load Module:
Source of Failure:
Summary (40 characters):
Problem Description: .
Failure Level:
Impact, Analysis, and Suggested Resolution:
(SFR Originator — Do Not Write Below This Line)
Disposition (Circle One): Accept Reject Date Resolution Is Required:.
Assigned to: Date Completed:
Notes: __
Figure 8-3. Sample Software Failure Report Form
148
Section 8 - System Testing
Discrepancy reports are reviewed by the leader of the system test
team before being passed to the software development team for
correction. The priority given to a discrepancy report depends on
the severity level of the failure. One grading system for failures that
has been used in the flight dynamics environment defines three
levels:
• Level 1 (highest severity): A major error occurred and no
workaround exists. The test cannot be evaluated further.
Abnormal termination of the program, numerical errors, or
requirements that are not implemented are considered level 1
discrepancies.
• Level 2: A major error occurred but a software workaround
exists. Abnormal terminations that can be worked around with
different user input, small errors in final results, or minor
failures in implementing requirements are classed as level 2
discrepancies.
• Level 3 (lowest severity): A cosmetic error was found. An
incorrect report format or an incorrect description in a display or
message are classified as cosmetic errors, as are deficiencies that
make the software difficult to use but that are not in violation of
the requirements and specifications. If testing schedules are
tight, the correction of cosmetic errors may be waived at the
authorization of the customer.
The status of discrepancy reports must be monitored closely by the
system test and management teams. A discrepancy report is closed
at the authorization of the test team leader when the source code has
been corrected and both the previously-failed test case(s) and the
regression test set have been executed successfully.
IV&V
Independent verification and validation (IV&V) is recommended
whenever high reliability is required in a particular mission-critical
application, such as manned-flight software. In the flight dynamics
environment, IV&V implies that system testing is planned and
conducted by a team of experienced application specialists who are
independent and distinct from the development team. The system
test plan that the team develops must contain additional tests
designed to determine robustness by stressing the system.
The management team must identify the need for IV&V in the
SDMP. An additional 5 to 15 percent of total project costs should be
budgeted to cover the additional effort required.
149
Section 8 - System Testing
MEASURES
Objective Measures
During the system test phase, managers continue to collect and
analyze the following data:
• Staff hours
• Total CPU hours used to date
• Source code growth
• Errors and changes by category
• Requirements questions and answers, TBDs, and changes
• Estimates of system size, effort, schedule, and reuse
They also begin to monitor measures of testing progress:
• The number of tests executed and the number of tests passed
versus the number of tests planned
• The number of discrepancies reported versus the number of
discrepancies resolved
Table 8-1 lists each of these measures, the frequency with which the
data are collected and analyzed, and the sources from which the data are
obtained. Aspects of the evaluation of these measures that are unique
to the system testing phase are discussed in the paragraphs that follow.
Evaluation Criteria
By tracking the number of system tests executed and passed as a
function of time, the management team gains insight into the
reliability of the software, the progress of testing, staffing
weaknesses, and testing quality. Figure 8-4 shows a sample system
test profile of a project monitored by the SEL.
The management team also monitors plots of
the number of discrepancies reported during
system testing versus the number repaired.
If the gap between the number of
discrepancies identified and the number
resolved does not begin to close after the
early rounds of testing, the management team
should investigate. One or more application
specialists may need to be added to the
development team to speed the correction
process.
NOTE
test status
test
discrepancies
\
Managers should use a tool to
assist them in tracking the
progress of system testing. The
tool should provide standardized
formats for entering and storing
testing status data, and should
generate plots of discrepancies
found and discrepancies
remaining unresolved, as a
function of time.
150
Section 8 - System Testing
Table 8-1. Objective Measures Collected During the System Testing Phase
MEASURE
Staff hours (total and
by activity)
Changes (by category)
Changes (to source
files)
Computer use (CPU
hours and runs)
Errors (by category)
Requirements (changes
and additions to
baseline)
Requirements (TBD
specifications)
Requirements
(questions/answers)
Estimates of total SLOC
(new, modified, and
reused), total units,
total effort, and
schedule
SLOC in controlled
libraries (cumulative)
Status (tests
planned/executed/
passed)
Test discrepancies
reported/resolved
SOURCE
Developers and
managers
(via PRFs)
Developers (via CRFs)
Automated tool
Automated tool
Managers (via DSFs)
Managers (via DSFs)
Managers (via DSFs)
Managers (via PEFs)
FREQUENCY
(COLLECT/ANALYZE)
Weekly/monthly
By event/monthly
Weekly/monthly
Weekly/biweekly
Developers (via CRFs) By event/monthly
Automated tool
Managers (via DSFs)
Managers (via DSFs)
Biweekly/biweekly
Biweekly/biweekly
Biweekly /biweekly
Monthly/monthly
Weekly/monthly
Weekly/biweekly
Weekly/biweekly
DATA COLLECTION
CONTINUED
BEGUN
Figure 8-5 shows the SEL model for discrepancy status against which current projects are
compared. The model is generally applicable for any testing phase.
If the number of discrepancies per line of code is exceptionally high in comparison with
previous projects, the software has not been adequately tested in earlier phases. Schedule
and budget allocations should be renegotiated to ensure the quality of the product.
151
Section 8 - System Testing
140
120
100
J2
CO
HI
I-
60
Tests planned — — -^
Tests executed
Tests passed
_i I— J t_
i i i i i
Symptom: Testing starts out well, then
levels off, and finally continues at a
lower rate.
Cause: Midway through the phase,
testers found they did not have the Input
coefficients needed to test flight
software. There was a long delay before
the data became available, and testing
momentum declined.
' ■ ■ ' ' i i i i i i i i
SYSTEM TEST PHASE
Figure &4. EUVEDSIM System Test Profile
100%
If the project's graph of open d
screpancy ^— -a*"*""""
reports is above the curve shown in the ^^-^^^""^
model, the possible causes are
a) inadequate staffing to
/ ^ DiscreDancies
correct errors
b) very unreliable software
^S* y^ ~~^ Fixed
c) ambiguous or volatile
requirements ^>
Discrepancies ^^
/ If the project's graph of open
Found |»^ ^ y
discrepany reports is below the
curve shown in the model, the
probable causes are
a) reliable, well-designed software
b) maintainable software (easy to
fix errors)
Open discrepancy
"■
— , ^g*-" reports
0%
**^i i i
1 1
TIME
Start of Testing Phase End of Testing Phase
Figure 8-5. SEL Discrepancy Status Model
Error rates should be significantly lower during system testing than
they were during build testing. High error rates during this phase
are an indicator of system unreliability. Abnormally low error rates
may actually indicate that system testing is inadequate.
error rates
152
Section 8 - System Testing
PRODUCTS
The key products of the system testing phase are
Completed, tested system code and supporting files
System test results
The updated user's guide
The system description
The acceptance test plan
System Code, Supporting Data, and System Files
By the end of system testing, the project's configured libraries
contain the final load module, the source code for the system
(including changes made to correct discrepancies), the control
procedures needed to build and execute the system, and all
supporting data and command files.
System Test Results
When system testing is complete, test results are published either as
a separate report or in an update of the system test plan. The latter
method lets the reader compare actual with expected results more
easily and eliminates some redundancy in describing test objectives
(see Figure 7-8). The individual report forms or checklists used
during testing to log results are collected in a separate volume.
System test results are reviewed by the test team leader, the
management team, and the CCB; they are also audited as part of the
FCA. Approved test results are controlled using configuration
management procedures.
User's Guide
The user's guide contains the information that will be needed by
those who must set up and operate the system. A recommended
outline for the user's guide is shown in Figure 8-6.
During system testing, the draft of the user's guide that was
produced by the development team during the implementation phase
is evaluated and updated. The system test team uses the guide
during test preparation and execution and provides written
comments back to developers. By the end of system testing, the
development team publishes an updated, corrected version of the
document that reflects the state of the system at the completion of
153
Section 8 - System Testing
USER'S GUIDE
The development team begins preparation of the user's guide during the implementation phase.
Items 1 and 2, and portions of item 3, represent updated material from the detailed design
document, although some rewriting is expected to make it more accessible to the user. A draft is
completed by the end of the implementation phase and is evaluated during system testing. At
the beginning of the acceptance test phase, an updated version is supplied to the acceptance test
team for evaluation. Corrections are incorporated, and a final revision is produced at the end of
the phase. The suggested contents are as follows:
1. Introduction
a. Overview of the system, including purpose and background
b. Document organization
c. Discussion and high-level diagrams of system showing hardware interfaces, external
data interfaces, software architecture, and data flow
Operations overview
a. Operations scenarios/scripts
b. Overview and hierarchy of displays, windows, menus, reports,
c. System performance considerations
etc.
Description for each subsystem or major functional capability
a. Overall subsystem capability
b. Assumptions about and restrictions to processing in each mode
c. Discussion and high-level diagrams of subsystems, including interfaces, data flow, and
communications for each processing mode
d. High-level description of input and output
e. Detailed description of processing keyed to operator-specified input and actions in terms
of points of control, functions performed, and results obtained (both normal and
abnormal, i.e., error processing and recovery)
f. For interactive subsystems, facsimiles of displays in the order in which they are
generated
g. Facsimiles of hardcopy output in the order in which it is produced, annotated to show
what parameters control it
h. List of numbered messages with explanation of system's and user's actions, annotated to
show the units that issue the message
4. Requirements for execution
a. Resources — discussion, high-level diagrams, and tables for system and subsystems
(1) Hardware
(2) Data definitions, i.e., data groupings and names
(3) Peripheral space considerations — data storage and printout
(4) Memory considerations — program storage, array storage, and data set buffers
(5) Timing considerations
(a) CPU time in terms of samples and cycles processed
(b) I/O time in terms of data sets used and type of processing
(c) Wall-clock time in terms of samples and cycles processed
b. Run information — control statements for various processing modes
c. Control parameter information — by subsystem, detailed description of all control
parameters (e.g., NAMELISTs), including name, data type, length, representation,
function, valid values, default value, units, and relationship to other parameters
Figure 8-6. User's Guide Contents
154
Section 8 - System Testing
r
^TAILORING NOTE \
TAILORING NOTE
\
In the system description,
briefly discuss the
error-handling philosophy that
has been incorporated into the
software. For Ada systems, the
discussion should summarize
the approach used in raising,
reporting, and recovering from
exceptions.
Tailor the content of
the user's guide to
highlight the key
information needed
by users. Keep the
writing style
succinct and easily
understandable.
testing. This version is
delivered to the acceptance
test team at the ATRR for use
during the next phase.
System Description
The system description doc-
ument records the final design
of the system. It contains
detailed explanations of the
internal structure of the
software and is addressed to
those who will be responsible
for enhancing or otherwise
modifying the system in the
future. Figure 8-7 gives the
outline for the system
description recommended by
the SEL.
test items
Acceptance Test Plan
The acceptance test plan describes the steps that will be taken during
the acceptance testing phase to demonstrate to the customer that the
system meets its requirements. The plan details the methods and
resources that will be used in testing, and specifies the input data,
procedures, and expected results for each test. In the plan, each test
is mapped to the requirements and specifications to show which
requirements it demonstrates. The requirements verified by a
particular test are called test items.
The acceptance test plan is prepared by members of the acceptance
test team following the generalized test plan outline shown
previously (Figure 7-8). To ensure consistency between the
requirements documents and the acceptance test plan, members of
the requirements definition team join the acceptance test team to
begin working on the plan as soon as the initial requirements and
specifications have been delivered. As TBD requirements are
resolved and as specification modifications are approved, the draft
of the acceptance test plan is updated. At the beginning of system
testing, the completed draft is provided to the development team for
review.
155
Section 8 - System Testing
SYSTEM DESCRIPTION
During the implementation phase, the development team begins work on the system description by updating
data flow/object diagrams and structure charts from the detailed design. A draft of the document is
completed during the system testing phase and a final version is produced by the end of acceptance testing.
The suggested contents are as follows:
Introduction — purpose and background of the project, overall
overview
system concepts, and document
System overview
a. Overview of operations scenarios
b. Design drivers (e.g., performance considerations) and their order of importance
c. Reuse strategy
d. Results of prototyping efforts
e. Discussion and high-level diagrams of the selected system design, showing hardware interfaces,
external data interfaces, interconnections among subsystems, and data flow
f. Traceability matrix of major components against requirements and functional specifications
g. Error-handling strategy
Description of each subsystem or major functional breakdown
a. Overall subsystem capability
b. Assumptions about and restrictions to processing in each mode
c. Discussion and high-level diagrams of subsystem, including interfaces, data flow, and
communications for each processing mode
d. High-level description of input and output
e. Structure charts or object-oriented diagrams expanded to the subprogram level, showing interfaces,
data flow, interactive control, interactive input and output, and hardcopy output
Requirements for creation
a. Resources — discussion,
high-level diagrams, and tables for system and subsystems
(1) Hardware
(2) Support data sets
(3) Peripheral space considerations — source code storage, scratch space, and printout
(4) Memory considerations — program generation storage and data set buffers
(5) Timing considerations
(a) CPU time in terms of compile, build, and execute benchmark test
(b) I/O time in terms of the steps to create the system
b. Creation information — control statements for various steps
c. Program structure information — control statements for overlaying or loading
5. Detailed description of input and output by step — source code libraries for system and
subsystems, object code libraries, execution code libraries, and support libraries
6. Internal storage requirements — description of arrays, their size, their data capacity in all
processing modes, and implied limitations of processing
7. Data interfaces for each internal and external interface
a. Description, including name, function, frequency, coordinates, units, computer type, length, and
representation
b. Format — organization (e.g., indexed), transfer medium (e.g., disk), layout of frames
(samples, records, blocks, and/or transmissions), and storage requirements
8. Description of COMMON blocks, including locations of any hard-coded physical constants
9. Prologs/package specifications and PDL for each unit (separate volume)
10. Alphabetical list of subroutines from support data sets, including a description of each
subroutine's function and a reference to the support data set from which it comes
Figure 8-7. System Description Contents
156
Section 8 - System Testing
Acceptance tests must be designed to verify that the system meets
existing, documented requirements. All tests for robustness and
performance must be based on stated requirements. The plan must
explicitly specify the results that are expected from each test and any
debug data or intermediate products that testers will require in order
to evaluate the software.
The basic subset of tests that are to be run during regression testing
are also identified in the test plan. The regression test suite should
include those tests that verify the largest number of critical
requirements in a single run, i.e., those that are the most
comprehensive, yet efficient, tests to execute.
In general, the acceptance test plan should be constructed so that
tests can be conducted independently. Multiple tests may be
performed simultaneously, and testing should be able to continue
after a problem is found. Tests must also be repeatable; if two
different testers execute the same test case, the results should be
consistent.
^TAIXWaMGNOTE ^
ACCEPTANCE TEST READINESS REVIEW
When the system is ready to be given to the acceptance test team, a
formal "hand-over" meeting of developers and testers is held. The
purpose of this acceptance test readiness review (ATRR) is to
identify known problems, to establish the ground rules for testing,
and to assist the acceptance test team in setting up the testing
environment.
The ATRR is an opportunity to finalize
procedural issues and to reach agreement on
the disposition of any unresolved problems.
To facilitate this, the development team should
conduct demonstrations of the system for the
acceptance test team prior to the meeting. At
the meeting, the discussion should cover the
status of system tests, specification
modifications, system test discrepancies,
waivers, and the results of configuration
audits.
The formality of the ATRR should
be tailored to the project. On
large projects with many inter-
facing groups, the ATRR should
be held as a formal review with
hardcopy materials and slide/
viewgraph presentations. On
small projects, the ATRR may be
an informal meeting held around
a conference table.
The ATRR format and schedule are shown in
Figure 8-8. An outline of recommended
materials is provided in Figure 8-9.
157
Section 8 - System Testing
ATRR FORMAT
Presenters
• System test team
• Acceptance test team
• Software development team
Other participants
• Quality assurance representatives
• Customer interfaces
• User representatives
• System capacity/performance analysts
Attendees must be familiar with the project background, requirements,
and design.
Schedule — after completion of system testing and before the beginning
of the acceptance testing phase
Agenda — establishment of ground rules and procedures for acceptance
testing, identification of known problems, and discussion of the test
environment
Materials — distributed a minimum of 3 days before the review.
Figure 8-8. ATRR Format
MATERIALS FOR THE ATRR
outline of ATRR materials, purpose of the review, and system overview
1.
2.
Introduction
System test results
a. Summary of test results
b. Status of discrepancies and waivers
c. Unresolved issues
Acceptance testing overview — summary of testing approach, including any major
changes to the acceptance test plan
a. Organizational responsibilities during the acceptance testing phase
b. Test configuration and environment, including facilities and computer resources
c. Configuration management procedures
d. Test tools, test data, and drivers/simulators
e. Test reporting, analysis, and discrepancy-handling procedures
f. Test milestones and schedules
Test readiness assessment
a. Results of configuration audits
b. System readiness
c. Staff training and preparedness
d. Status of the acceptance test plan
e. Action items and schedule for their completion
¥%
Figure 8-9. ATRR Materials
158
Section 8 - System Testing
EXIT CRITERIA
To determine whether the system and staff are ready to begin the
acceptance testing phase, the management team should ask the
following questions:
• Have the system and analytical test plans been executed
successfully? Have all unresolved discrepancies either been
eliminated as requirements or postponed to a later release in a
formal waiver?
• Have the FCA and PCA been conducted? Have all resulting
action items been completed?
• Are the user's guide and system description accurate, complete,
and clear? Do they reflect the state of the completed system?
• Has the acceptance test plan been finalized?
When the management team can answer "Yes" to each question, the
system testing phase can be concluded.
159
as
o
</>
(D
O
A
O
3
00
<
to
(C
3
<D
3
r
pwr
«! I!"
<l*I ' '!'
nJliiiillll #11 I R!
1 1 III
Section 9 - Acceptance Testing
CYCLE
PHASES
REQUIREMENTS
SMENTS'
ANALYSIS
DESIGN
mm?
mrnw&M^wiiM
1IIIM!
ACCEPTANCE
TES
ESTING
SECTION 9
THE ACCEPTANCE TESTING PHASE
■■■ '■■■■
-HH
PHASE HIGHLIGHTS.
ENTRY CRITERIA
• System and analytical test plans
successfully executed
• Acceptance test plan finalized
• User's guide and system description completed
• Configuration audits and ATRR conducted
EXIT CRITERIA
• Acceptance test plan successfully executed
• User's guide and system description
finalized
• System formally accepted and delivered
• Software development history completed
ZZZMMmMMmmmm
mmm.
iK^iy:^:-:-;*:^.-:^:-::::^::*?^:
PRODUCTS
• System delivery tape
• Finalized user's guide and
system description
• Acceptance test results
• Software development history
MEASURES
• Staff hours
♦CPU hours
• SLOC in controlled libraries (cumulative)
• Changes and errors (by category)
• Requirements Q&As, TBDs, and changes
• Estimates of system size, effort,
schedule, and reuse
• Acceptance test items planned/
executed/passed
• Discrepancies reported/resolved
■ SEL project completion statistics
METHODS AND TOOLS
• Acceptance test plan
• Regression testing
•Configuration management
•Test evaluation and
error-correction procedures
• Discrepancy reports, test logs, and
test management tools
KEY ACTIVITIES
Acceptance Test Team
• Complete the preparations for acceptance
testing
• Execute the tests items in the acceptance
test plan
• Analyze and report test results
• Evaluate the user's guide
• Formally accept the system
Development Team
• Support the acceptance test team
• Correct discrepancies found during testing
• Train the acceptance test team to operate
the system
• Refine system documentation
■ Deliver the completed system
Management Team
• Allocate team responsibilities and finalize
testing procedures
• Ensure the quality and progress of testing
• Ensure cooperation among teams
• Prepare the software development history
mnm>iwjmmuiim'"ni|w ,"'.'.y'.!".;'.mj.yjj"j»jww
M*M*^y—A-*a*— **«*wi**M*i*t
S
1
In the Cleanroom methodology, acceptance testing is complete when the mean time
between failure (MTBF) of statistically generated tests exceeds a pre-determined
threshold value.
PRECEDING PAGE BLANK NOT FILMEQ
161
Section 9 - Acceptance Testing
OVERVIEW
The purpose of the acceptance testing phase is to demonstrate that
the system meets its requirements in the operational environment.
The acceptance testing phase begins after the successful conclusion
of an ATRR. The testing conducted during this phase is performed
under the supervision of an independent acceptance test team (on
behalf of the customer) and follows the procedures specified in the
acceptance test plan. The development team provides training and
test execution and analysis support to the test team. They also
correct any errors uncovered during testing and update the system
documentation to reflect software changes and corrections.
Acceptance testing is complete when each test item specified in the
acceptance test plan has either been successfully completed or has
been waived at the authorization of the customer, and the system has
been formally accepted. The phase is concluded when the system
delivery tape and final system documentation have been delivered to
the customer for operational use.
Figure 9-1 is a flow diagram that shows the process of acceptance
testing.
it
KEY ACTIVITIES ^p^^M *
During this phase, the acceptance test team and the development
team work closely together to set up and execute the tests specified
in the acceptance test plan.
The acceptance test team is composed of the analysts who will use
the system and several members of the team that prepared the
requirements and specifications document. The acceptance test
team supplies test data, executes the tests, evaluates the test results,
and, when acceptance criteria are met, formally accepts the system.
Members of the development team correct any discrepancies arising
from the software and finalize the system documentation. Often, the
development team sets up and executes the first round of acceptance
tests. This provides training for the acceptance test team, which
then assumes responsibility for test execution during the subsequent
rounds of acceptance testing. In any case, one member of the
development team is always present during each testing session to
offer operational and analysis support.
162
Section 9 - Acceptance Testing
ACCEPTANCE TEST
PUN
NOTE: See KEY ACTIVITIES (or more detailed
description! of the processes in this diagram.
OPERATIONAL SOFTWARE LIBRARIES'
FINAL SYSTEM CONFIGURATION .
SUPPORTING FILES, AND
DOCUMENTATION
Figure 9-1. Acceptance Testing
Some acceptance testing activities, such as test set up and execution, generation of test data,
and formal discrepancy reporting, can be performed by either the development team or by
the acceptance test team. At the ATRR, the assignment of each of these activities to a
particular team is negotiated by members of the management team. The management team,
which includes managers of both the software development and acceptance test teams,
bases these assignments on the specific needs and drivers of the project.
The key technical and managerial activities of the acceptance test phase are outlined in the
following paragraphs. A recommended timeline for the execution of these activities is
shown in Figure 9-2.
163
Section 9 - Acceptance Testing
ACCEPTANCE
TEST TEAM
SOFTWARE
DEVELOPMENT
TEAM
MANAGEMENT
TEAM
Complete preparations for acceptance testing
Generate test data
"^^
Evaluate the user's guide
Execute acceptance tests
Evaluate tests
Report final test results
Prepare for acceptance testing
Provide acceptance testing support
_^
Correct errors __
Deliver new load modules
Update user's guide and system description
Deliver system
Finalize testing procedures and assign team duties
Record project history data
Ensure progress, quality, and completeness of acceptance testing
Coordinate testing activities and manage priorities
_^
Quality assure final products
jrtr
Complete software development history
ATRR
-TIME
Figure 9-2. Timeline of Key Activities in the Acceptance Testing Phase
164
Section 9 - Acceptance Testing
Activities of the Acceptance Test Team
• Complete the preparations for acceptance testing. Establish
the acceptance test environment. Acceptance testing, unlike
system testing, always takes place on the computer targeted for
operational use; therefore, it is critically important to schedule
computer resources well in advance.
Finish generating the simulated data to be used in testing and
allocate the necessary data sets. Quality check the simulated data
to ensure that the required test data have been produced. Bear in
mind that generating simulated data requires intensive effort and
that, because of the complexity of flight dynamics test data,
simulated data must often be generated several times before the
desired data set is achieved. Plan ahead for adequate time and
resources.
Refer to the user's guide to determine the parameters needed to
set up the test cases. Work with the development team to set up
the tests accurately and to assure the quality of test preparations.
Check the control-language procedures (JCL/DCL) for executing
tests.
Obtain the expected results from the acceptance test plan and
review them for completeness. Calculate any expected results
that are missing.
• Execute the test items in the acceptance test plan. Early in
the phase, attempt to execute all tests in the order given in the
acceptance test plan, executing each item of each test in
sequence. This "shake-down" ensures that any major problems
are found early, when they can be most easily corrected.
If a basic misunderstanding of a requirement is found during
initial test runs, such that further testing would be unproductive,
suspend testing until a new load module can be produced.
Negotiate with the development team to determine a schedule for
the delivery of a corrected load module and the resumption of
testing.
Control the testing configuration. To relate test results to a
particular load module unambiguously, run the entire set of tests
designated for a round of testing on a specific load module
before introducing any corrections. Continue testing until the
number of errors encountered make further testing unproductive.
165
Section 9 - Acceptance Testing
Introduce new load modules according to the test configuration
management procedures. When a new, corrected load module is
received, first rerun those tests that previously failed because of
software errors. If those tests succeed, proceed with regression
testing.
Execute the regression tests to demonstrate reproducible results
and ensure that corrections have not affected other parts of the
system. The basic subset of tests to be run during regression
testing, as identified in the acceptance test plan, includes those
that are the most comprehensive yet efficient tests to execute.
The regression test suite may be modified to expedite testing or
to provide different coverage as testers gain more experience
with the system.
During each test session, review test results with the developers
who are supporting the tests to ensure that the test was executed
properly. At the end of the test session, produce a preliminary
report listing the test cases that were executed and recording
these initial observations.
Analyze and report test results. Evaluate test results within
one week of execution. Wherever possible, use automated tools
in the analysis process. Record analysis procedures and keep all
relevant materials. Remember that records and reports must give
complete accounts of the procedures that were followed; if a test
cannot be evaluated, note the fact and report the reasons for it.
Compare test results with expected results and document all
errors and discrepancies found, regardless of how minor they
appear or whether they will be corrected.
Prepare a detailed evaluation report for each test. This report
should include a test checklist and a categorization of the results
for each item of each test. Specific test evaluation procedures,
including a five-level test categorization scheme, are discussed
under Methods and Tools.
Near the end of the phase, when all acceptance tests have been
completed, prepare a final report documenting the results of
testing. Include the final detailed report on each test, and
provide an overall summary that gives an overview of the testing
process and records how many test items passed during each
round of testing.
166
Section 9 - Acceptance Testing
• Evaluate the user's guide. During acceptance testing, evaluate
the user's guide for accuracy, clarity, usability, and
completeness. Provide this feedback to the development team so
that they can update the document and issue a finalized version
by the end of acceptance testing.
• Formally accept the system. When the system meets all
acceptance criteria, except those waived by the customer,
prepare a formal memorandum declaring the system accepted.
Activities of the Development Team
• Support the acceptance test team. Assist the acceptance test
team in setting up and executing tests. At least one developer
should be available during each test session to answer questions,
to provide guidance in executing the system, and to review initial
test results.
r
(
NOTE
\
The degree to which the
development team assists the
acceptance test team in setting up
and executing tests, generating test
data, or preparing discrepancy
reports varies with the project.
Management defines each team's
duties at the start of the phase and
documents them in the acceptance
test procedures.
Work with the acceptance test team to isolate
the sources of discrepancies between
expected and actual test results. Classify
failed test items according to their causes,
showing which items failed because of the
same software discrepancies and which items
could not be evaluated because a preceding
test failed. Help the testers prepare formal
discrepancy reports; typically, because a
single factor may cause more than one
failure, there are fewer discrepancy reports
than failed test items.
r
( RULE
\
No specification modifications
that add requirements or
enhancements can be accepted
during acceptance testing.
Instead, these should be
carefully considered for
implementation during the
maintenance phase.
Correct discrepancies found during
testing. Correct those software errors that
occur because of faults in the design or
code. Errors in the specifications are
corrected as negotiated by the acceptance test
manager, the development manager, and the
customer. Because the requirements and
specifications are under configuration
control, the CCB must also approve any
corrections to specifications. Incorporate
software updates that result from approved
corrections into a future load module.
167
Section 9 - Acceptance Testing
Use detailed test reports, test output, and the specifications to
isolate the source of each error in the software. If an error is
uncovered in the software design, the effect of the repair on
costs and schedules may be significant. Look for a workaround
and notify management immediately so that the impact and
priority of the error can be determined.
Verify all corrections, using code reading, unit testing, and
integration testing. Update the SENs for the revised units and
fill out a CRF describing each correction. Strictly follow the
same configuration management procedures for revised units as
were used during system testing. To reduce the possibility of
configuration errors, only the project librarian should change
configured source libraries and build the executable image.
Deliveries of new acceptance test load modules should include a
memorandum detailing which discrepancy reports have been
resolved and which are still outstanding.
Train the acceptance test team to
operate the system. Ensure that
members of the acceptance test team
steadily gain expertise in running the
system. Training may be completed at
the beginning of acceptance testing or
spread out over the phase. The schedule
of training depends on when the
acceptance test team is to assume full
responsibility for executing the tests.
Refine system documentation. Finalize
the user's guide and the system
description documents to reflect recent
software changes and user comments.
r
(
NOTE
\
In the flight dynamics environment
training is limited to executing or
operating the system. The
development team does not train
the operations team on how to use
the system to support the mission.
• Deliver the completed system. After the system is accepted,
prepare the final system tape. Verify its correctness by loading it
on the operational computer, building the system from it, and
using the test data on the tape to execute the regression test set
specified in the acceptance test plan.
Activities of the Management Team
• Allocate team responsibilities and finalize testing
procedures. Negotiate to determine the appropriate team
structure, division of duties, testing procedures, and
contingency plans for the project.
168
Section 9 - Acceptance Testing
Define a realistic testing process that can be used on this project
and adhere to it. Tailor the standard process to address drivers
specific to the project, such as system quality, schedule
constraints, and available resources.
Define the roles and responsibilities of each team clearly.
Specify which teams are to generate simulated data, set up test
cases, execute tests, and prepare formal discrepancy reports.
Where teams share responsibility, clearly define the specific
activities that each is expected to perform.
Stipulate contingency plans. Specify what will happen if a
major error is encountered. Define the conditions that warrant
suspension of testing until a correction is implemented. Define
when and how testing should circumvent a problem.
Ensure the quality and progress of testing. Ensure that team
members adhere to procedures and standards. Analyze
summaries of testing progress and examine plots of test
discrepancies weekly. Use measures of effort and schedule
expended to date to reestimate costs and staffing levels for the
remainder of the project.
Place special emphasis on enforcing configuration management
procedures. The control of software libraries and test
configurations is critical during the acceptance testing phase.
Ensure cooperation among teams. Coordinate the activities of
the acceptance test and the development teams. Ensure that the
acceptance test team evaluates tests quickly and that the
development team corrects software errors promptly so that the
pace of testing does not decline. Assist in resolving technical
problems when necessary.
r
(
NOTE
\
The contents of the software
development history are
outlined under the PRODUCTS
heading in this section.
Ensure that error corrections are thoroughly
tested by the development team before
revised units are promoted to controlled
libraries and delivered for retesting.
Review all test results and system
documentation.
Prepare the software development
history. At the beginning of acceptance
testing, record measures and lessons
learned from the system testing phase and
169
Section 9 - Acceptance Testing
add this information to the software development history.
Complete the phase-by-phase history at the end of acceptance
testing and prepare the remainder of the report. Summarize the
project as a whole, emphasizing those lessons learned that may
be useful to future projects and process-improvement efforts.
Include summary charts of key project data from the SEL
database.
METHODS AND TOOLS
The key methods and tools of the acceptance testing phase are
The acceptance test plan
Regression testing
Configuration management
Test evaluation and error-correction procedures
Discrepancy reports
Test logs
Test management tools
The final acceptance test plan, which describes the procedures to be
followed in recording and evaluating acceptance tests and while
correcting test discrepancies, is a product of the system testing phase
and was discussed in Section 8.
Many of the automated tools used in the acceptance testing phase
were introduced to facilitate the implementation of the system.
These tools — configuration management systems, symbolic
debuggers, static code analyzers, performance analyzers,
compilation systems, and code-comparison utilities — are discussed
in Section 7.
Test logs, discrepancy reports, test management tools, and
regression testing procedures are the same as those used for system
testing; they are discussed in detail in Section 8.
The other methods and tools in this list are elaborated in the
paragraphs that follow.
Configuration Management
During the acceptance test phase, as in the other test phases, strict
adherence to configuration management procedures is essential.
Any changes to the code in the permanent source code libraries must
be made according to established procedures and recorded on CRFs.
170
Section 9 - Acceptance Testing
Configuration management procedures must ensure that the load
modules being tested correspond to the code in the project's
libraries.
Developers should follow the guidelines given in Section 8 for
managing configured software as they repair discrepancies, test the
corrections, and generate new load modules for acceptance testing.
Acceptance testers must be able to relate test results to particular load
modules clearly. Therefore, the load modules must be under strict
configuration control, and, at this point in the life cycle, the entire
set of tests designated for a round of testing should be run on a
specific load module before any corrections are introduced.
Similarly, changes in the test setup or input data must be formally
documented and controlled, and all tests should be labeled for the
module and environment in which they were run.
Test Evaluation and Error-Correction Procedures
The acceptance test team is responsible for evaluating each
acceptance test and forwarding the results to the development team.
Each test consists of a number of items to be checked. The results
of analyzing each test item are categorized according to the following
five-level evaluation scheme:
• Level 1 : Item cannot be evaluated or evaluation is incomplete.
This is normally the result of an incorrect test setup or an
unsatisfied dependency. If this category is checked, the reason
should be stated. If the test could not be evaluated because the
test was inadequately specified, the test plan needs to be
corrected.
• Level 2: Item does not pass, and an operational workaround for
the problem does not exist.
• Level 3: Item does not pass, but an operational workaround for
the problem exists.
• Level 4: Only cosmetic errors were found in evaluating the item.
• Level 5: No problems were found.
Typically, items categorized as Level 1 or 2 are considered to be
high priority and should be addressed before items at Levels 3 and
4, which are lower priority. The intention is to document all errors
and discrepancies found, regardless of their severity or whether they
will ultimately be corrected.
171
Section 9 - Acceptance Testing
Tests and test items are evaluated according to these criteria:
• All runs must execute correctly without encountering abnormal
terminations or any other runtime errors.
• Numerical results must be within acceptable limits of the
expected values.
• Tabular output must meet the criteria outlined in the
specifications, with proper numerical units and clear descriptions
of parameters.
The acceptance test team documents test results using two kinds of
report:
• Preliminary reports, prepared at the end of each test session,
provide a rapid assessment of how the software is working and
early indications of any major problems with the system. They
are prepared by the acceptance test team on the basis of a "quick-
look" evaluation of the executions.
preliminary
test
reports
• Detailed reports, prepared within a week of test execution,
describe problems but do not identify their sources in the code.
They are prepared by the acceptance test team by analyzing
results obtained during the test sessions, using hand calculations
and detailed comparisons with the expected results given in the
acceptance test plan.
The testers and developers then work together to identify the
software problems that caused the erroneous test results directly or
indirectly. These software problems are documented and tracked
through formal discrepancy reports, which are then prioritized and
scheduled for correction.
The development team then corrects errors found in the software
subject to the following guidelines:
• Software errors that occur because of a violation of the
specifications are corrected, and the corrections are incorporated
into an updated load module for retesting.
• Corrections resulting from errors in the specifications or
analytical errors require modifications to the specifications. The
customer and the CCB must approve such modifications before
the necessary software updates are incorporated into an updated
load module.
detailed
test
reports
172
Section 9 - Acceptance Testing
MEASURES
Objective Measures
During the acceptance testing phase, managers continue to collect
and analyze the following data:
• Staff hours
• Total CPU hours used to date
• Source code growth
• Errors and changes by category
• Requirements questions and answers, TBDs, and changes
• Estimates of system size, effort, schedule, and reuse
• Test items planned, executed, and passed
• Discrepancies reported and resolved
The source of these measures and the frequency
with which the data are collected and analyzed are
shown in Table 9-1.
r
(
NOTE
\
A complete description of the
PCSF and SEF can be found
in Data Collection Procedures
for the SEL Database
(Reference 19).
At the completion of each project, SEL personnel
prepare a project completion statistics form
(PCSF). The management team verifies the data
on the PCSF, and fills out a subjective evaluation
form (SEF). The data thus gathered helps build
an accurate and comprehensive understanding of
the software engineering process. Combined
with the software development history report, the
SEF supplies essential subjective information for
interpreting project data.
test status
Evaluation Criteria
The management team can gauge the reliability of the software and
the progress of testing by plotting the number of acceptance test
items executed and passed in each round of testing as a function of
time. An exceptionally high pass rate may mean that the software is
unusually reliable, but it may also indicate that testing is too
superficial. The management team will need to investigate to
determine which is the case. If the rate of test execution is lower
than expected, additional experienced staff may be needed on the test
team.
173
Section 9 - Acceptance Testing
Table 9-1. Objective Measures Collected During the Acceptance Testing Phase
MEASURE
SOURCE
FREQUENCY
(COLLECT/ANALYZEJ
DATA COLLECTION
CONTINUED
BEGUN
Staff hours (total and
by activity)
Developers and
managers
(via PRFs)
Weekly/monthly
*
Changes (by category)
Developers (via CRFs)
By event/monthly
*
Changes (to source
files)
Automated tool
Weekly/monthly
*
Computer use (CPU
hours and runs)
Automated tool
Weekly/biweekly
*
Errors (by category)
Developers (via CRFs)
By event/monthly
*
Requirements (changes
and additions to
baseline)
Managers
(via DSFs)
Biweekly/biweekly
*
Requirements (TBD
specifications)
Managers
(via DSFs)
Biweekly/biweekly
*
Requirements
(Questions/answers)
Managers (via DSFs)
Biweekly/biweekly
*
Estimates of total SLOC
(new, modified, and
reused), total units,
total effort , and
schedule
Managers
(via PEFs)
Monthly/monthly
*
SLOC in controlled
libraries (cumulative)
Status ( test items
planned/executed/
passed)
Automated tool
Managers (via DSFs)
Weekly/monthly
Weekly/biweekly
* Note: Test status is
plotted separately for
the system testing and
* the acceptance testing
phases. Test
discrepancies are also
plotted separately for
Test discrepancies
reported/resolved
Managers (via DSFs)
Weekly/biweekly
* each phase.
i
174
Section 9 - Acceptance Testing
test
discrepancies
error rates
The management team also monitors plots of the number of
discrepancies reported versus the number repaired (see Measures in
Section 8). If the gap between the number of discrepancies
identified and the number resolved does not begin to close after the
early rounds of acceptance testing, more staff may be needed on the
development team to speed the correction process.
The trend of the error rates during the acceptance testing phase is
one indication of system quality and the adequacy of testing. Based
on SEL projects from the late 1980s and early 1990s, the SEL
model predicts a cumulative error rate of 4.5 errors per KSLOC by
the end of acceptance testing. Typically, the SEL expects about 2.6
errors per KSLOC in the implementation phase, 1.3 in system
testing, and 0.65 in acceptance testing; i.e., error detection rates
decrease by 50 percent from phase to phase.
An error rate above model bounds often indicates low reliability or
misinterpreted requirements, while lower error rates indicate either
high reliability or inadequate testing. In either case, the management
team must investigate further to understand the situation fully.
Figure 9-3 shows an example of an error-rate profile on a high-
quality project monitored by the SEL.
Symptom: Lower error rate
and lower error detection
rate.
Cause: Early indication of
high quality. Smooth pro-
gress observed in uncovering
errors, even between phases
(well-planned testing).
Result: Proved to be one of
the highest-quality systems
produced in this environment.
Figure 9-3. Sample Error-Rate Profile, UARS AGSS
175
Section 9 - Acceptance Testing
PRODUCTS
The key products of the acceptance testing phase are
• System delivery tape
• Finalized user's guide and system description
• Acceptance test results
• Software development history
System Delivery Tape
At the end of acceptance testing, a system delivery tape is produced
that contains the accepted system code and the supporting files from
the project's configured libraries. The system tape holds all of the
information required to build and execute the system, including the
following:
The final load module
The source code for the system
The control procedures needed to build and execute the system
All supporting data and command files
Test data for regression tests
Two copies of the system tape are delivered to the customer.
Finalized User's Guide and System Description
The user's guide is updated to clarify any passages that the testers
found confusing and to reflect any changes to the system that were
made during the acceptance testing phase. The system description is
also updated; system changes are incorporated into the document
and any discrepancies found during the configuration audits are
corrected. Final versions of both documents are delivered at the end
of the project.
Acceptance Test Results
When acceptance testing is complete, test results are published either
as a separate report or in an update of the acceptance test plan. (The
latter method allows the reader to easily compare actual with
expected results and eliminates some redundancy in describing test
objectives; see Figure 7-8.) The individual report forms or
checklists used during testing to log results are collected in a
separate volume.
176
Section 9 - Acceptance Testing
Software Development History
During the acceptance testing phase, the management team finalizes
the software development history for the project. This report, which
should be delivered no later than one month after system acceptance,
summarizes the development process and evaluates the technical and
managerial aspects of the project from a software engineering point
of view. The purpose of the report is to help software managers
familiarize themselves with successful and unsuccessful practices
and to give them a basis for improving the development process and
product. The format and contents of the software development
history are shown in Figure 9-4.
EXIT CRITERIA
To determine whether the system is ready for delivery, the
management team should ask the following questions:
• Was acceptance testing successfully completed?
• Is all documentation ready for delivery? Does the user's guide
clearly and completely describe how to execute the software in
its operational environment?
• Has the acceptance test team, on behalf of the customer,
formally accepted the software?
• Have final project statistics been collected and have subjective
evaluation forms been submitted? Is the software development
history complete?
When the management team can answer "Yes" to each question, the
acceptance testing phase is concluded.
177
Section 9 - Acceptance Testing
SOFTWARE DEVELOPMENT HISTORY
Material for the development history is collected by the management team throughout the life of
the project. At the end of the requirements analysis phase, project data and early lessons
learned are compiled into an initial draft. The draft is expanded and refined at the end of each
subsequent phase so that, by the end of the project, all relevant material has been collected and
recorded. The final version of the software development history is produced within 1 month of
software acceptance. The suggested contents are as follows:
1. Introduction — purpose of system, customer of system, key requirements, development
machines and language
2. Historical overview by phase — includes products produced, milestones and other key
events, phase duration, important approaches and decisions, staffing information, and
special problems
a. Requirements definition — if requirements were produced by the software development
team, this section provides an historical overview of the requirements definition phase.
Otherwise, it supplies information about the origin and documentation of the system's
requirements and functional specifications
b. Requirements analysis
c. Preliminary design
d. Detailed design
e. Implementation — coding through integration for each build/release
f. System testing
g. Acceptance testing
3. Project data
a. Personnel and organizational structure — list of project participants, their roles, and
organizational affiliation. Includes a description of the duties of each role (e.g., analyst,
developer, section manager) and a staffing profile over the life of the project
b. Schedule — table of key dates in the development of the project and a chart showing
each estimate (original plus reestimates at each phase end) vs. actual schedule
c. Project characteristics
(1) Standard tables of the following numbers: subsystems; total, new, and reused
units; total, new, adapted and reused (verbatim) SLOC, statements, and
executables; total, managerial, programmer, and support hours; total productivity
(2) Standard graphs or charts of the following numbers: project growth and change
histories; development effort by phase; development effort by activity; CPU usage;
system test profile; error rates; original size estimate plus each reestimate vs. final
system size; original effort estimate plus each reestimate vs. actual effort required
(3) Subjective evaluation data for the project — copy of the SEL subjective evaluation
form (SEF) or report of SEF data from the project data base (see Reference 19)
4. Lessons learned — specific lessons and practical, constructive recommendations that
pinpoint the major strengths and weaknesses of the development process and product, with
particular attention to factors such as the following:
Planning — development plan timeliness and usefulness, adherence to development
plan, personnel adequacy (number and quality), etc.
Requirements — completeness and adequacy for design, change history and stability,
and clarity (i.e., were there misinterpretations?), etc.
Development — lessons learned in design, code and unit testing
Testing — lessons learned in system and acceptance testing
Product assurance — adherence to standards and practices; QA and CM lessons learned
New technology — impact of any new technology used by the project on costs,
schedules, quality, etc. as viewed by both developers and managers; recommendations
for future use of the technology
a.
c.
d.
e.
f.
Figure iW. Software Development History Contents
178
Section 10 - Keys to Success
SECTION 10
KEYS TO SUCCESS
HIGHLIGHTS
KEYS TO SOFTWARE DEVELOPMENT SUCCESS
• Understand your environment
• Match the process to the environment
• Experiment to improve the process
• Don't attempt to use excessively foreign technology
• Develop and adhere to a software
development plan
• Empower project personnel
• Minimize the bureaucracy
• Establish and manage the software
baseline
•Take periodic snapshots of project
health and progress
• Reestimate system size, staff effort,
and schedules regularly
• Define and manage phase transitions
• Foster a team spirit
• Start the project with a small senior
staff
DON'T...
• Allow team members to proceed in
an undisciplined manner
• Set unreasonable goals
• Implement changes without assessing
their impact and obtaining proper approval
• Gold plate
• Overstaff
• Assume that intermediate schedule
slippage can be absorbed later
• Relax standards
• Assume that a large amount of
documentation ensures success
i
&%sst&s>is&8£(tms&*8:.'.. ,.4.- .. " ' v ^a_l_^_. — L^, — . — ^l^^^^j^-^^j^^-^I^^^L^Llm^u^^m
179
Section 10 - Keys to Success
KEYS TO SOFTWARE DEVELOPMENT SUCCESS
The recommended approach to software development, described in
the preceding sections, has been developed and refined over many
years specifically for the flight dynamics environment. The
methodology itself is a product of the SEL's learning experience.
The SEL has found the following to be the keys to success for any
software development organization.
• Understand the environment. Before defining or tailoring a
methodology for your project or organization, determine the
nature of the problem, the limits and capabilities of the staff, and
the support software and hardware environment. Collect
baseline measurements of staff effort, system size, development
schedule, source code growth, software changes and errors, and
computer usage.
• Match the process to the environment. In planning a project
or defining a standard methodology, use your understanding of
the people, environment, and problem domain to select and tailor
the software process. There must be a match. Be sure that the
elements of the process have a rationale and can be enforced. If
you don't intend to or cannot enforce a standard or a procedure,
do not include it in the plan. Make data collection, analysis, and
reporting integral parts of the development methodology.
• Experiment to improve the process. Once a comfortable match
between the process and environment is defined, stretch it, a
little at a time, to improve it continuously. Identify candidate
areas for improvement, experiment with new techniques or
extensions to the process, and measure the impact. Based on a
goal of improving the process and/or product, select candidate
extensions with a high likelihood of success in the environment.
There should always be an expectation that the change will
improve the process. Be careful not to change too many things
at once so that the results from each change can be isolated. Be
aware that not all changes will lead to improvement, so be
prepared to back off at key points.
• Don't attempt to use excessively foreign technology.
Although minor improvements to the standard process can be
easily shared from one organization to another, carefully
consider major changes. Do not select and attempt a
significantly different technology just because it was successful
in other situations. The technology, and the risk that
accompanies its adoption, must suit the local environment.
180
Section 10 - Keys to Success
A
'^^ DOs ^r
DOs AND DONTs FOR PROJECT SUCCESS
As standard practice, the SEL records lessons learned on successful
and unsuccessful projects. The following DOs and DONTs, which
were derived from flight dynamics project experience, are key to
project success.
Nine DOs for Project Success
• Develop and adhere to a software development plan. At the
beginning of the project, prepare a software development plan
that sets project goals, specifies the project organization and
responsibilities, and defines the development methodology that
will be used, clearly documenting any deviations from standard
procedures. Include project estimates and their rationale.
Specify intermediate and end products, product completion and
acceptance criteria, and mechanisms for accounting progress.
Identify risks and prepare contingency plans.
Maintain and use the plan as a "living" document. Record
updates to project estimates, risks, and approaches at key
milestones. Provide each team member with the current
software development plan. Periodically, audit the team for
adherence to the plan.
• Empower project personnel. People are a project's most
important resource. Allow people to contribute fully to the
project solution. Clearly assign responsibilities and delegate the
authority to make decisions to specific team members. Provide
the team with a precise understanding of project goals and
limitations. Be sure the team understands the development
methodology and standards to be followed on the project.
Explain any deviations from the standard development
methodology to the team.
• Minimize the bureaucracy. Establish the minimum
documentation level and meeting schedule necessary to fully
communicate status and decisions among team members and
management. Excessive meetings and paperwork slow progress
without adding value. Don't try to address difficulties by adding
more meetings and management. More meetings plus more
documentation plus more management does not equal more
success.
181
Section 10 - Keys to Success
Establish and manage the software baseline. Stabilize
requirements and specifications as early as possible. Keep a
detailed list of all TBD items — classified by severity of impact
in terms of size, cost, and schedule — and set priorities for their
resolution. Assign appropriate personnel to resolve TBD items;
follow their progress closely to ensure timely resolution.
Estimate and document the impact to costs and schedules of each
specifications change.
Take periodic snapshots of project health and progress,
replanning when necessary. Compare the project's progress,
product, and process measures against the project's plan. Also
compare the current project with similar, past projects and with
measurement models for the organization. Replan when the
management team agrees that there is a significant deviation.
Depending on project goals and limitations, alter the staffing,
schedule, and/or scope of the project. Do not hesitate to reduce
the scope of the work when project parameters dictate.
When the project significantly exceeds defined limits for the
local environment, stop all project activity, audit the project to
determine the true project status, and identify problem areas.
Examine alternatives and devise a recovery plan before
proceeding again.
Reestimate system size, staff effort, and schedules regularly.
As the project progresses, more information is learned about the
size and complexity of the problem. Requirements change, the
composition of the development team changes, and problems
arise. Do not insist on maintaining original estimates. Each
phase of the life cycle provides new and refined information to
improve the estimates and to plan the project more effectively.
There is nothing wrong with realizing that the size has been
underestimated or that the productivity has been overestimated.
It is wrong not to be doing something to detect this and take the
appropriate action. As a rule, system size, effort, and schedule
should be reestimated monthly.
Define and manage phase transitions. Much time can be lost
in the transition from one phase to the next. Several weeks
before the start of each new phase, review progress to date, and
set objectives for the next phase. See that the developers receive
training in the activities of the next phase, and set intermediate
goals for the team. Clarify any changes that have been made to
the development plan. While senior developers are finishing up
the current phase, get junior members of the team started on the
next phase's activities.
^^ DOS ^T
182
Section 10 - Keys to Success
A
A
• Foster a team spirit. Projects may include people from different
organizations or companies. Maximize commonality and
minimize differences among project members in all aspects of
organization and management. Clearly define and communicate
the roles of individuals and teams, but provide an overall project
focus. Cross-train as much as possible. Hold combined team
meetings so that everyone gets the same story. Have everyone
follow the same rules. Report progress on a project level as well
as a team level. Struggle through difficulties and celebrate
successes together as a unit, helping and applauding each other
along the way.
• Start the project with a small senior staff. A small group of
experienced senior people, who will be team leaders during the
remainder of the project, should be involved from the beginning
to determine the approach to the project, to set priorities and
organize the work, to establish reasonable schedules, and to
prepare the software development plan. Ensure that a plan is in
place before staffing up with junior personnel.
Eight DON'Ts for Project Success
• Don't allow team members to proceed in an undisciplined
manner. Developing reliable, high-quality software at low cost
is not a creative art; it is a disciplined application of a set of
defined principles, methods, practices, and techniques. Be sure
the team understands the methodology they are to follow and
how they are to apply it on the project. Provide training in
specific methods and techniques.
• Don't set unreasonable goals. Setting unrealistic goals is worse
than not setting any. Likewise, it is unreasonable to hold project
personnel to commitments that have become impossible. Either
of these situations tends to demotivate the team. Work with the
team to set reasonable, yet challenging, intermediate goals and
schedules. Success leads to more success. Setting solid reach-
able goals early in the project usually leads to continued success.
• Don't implement changes without assessing their impact and
obtaining proper approval. Estimate the cost and schedule
impact of each change to requirements and specifications, even if
the project can absorb it. Little changes add up over time. Set
priorities based on budget and schedule constraints. Explore
options with the change originator. In cases where changes or
corrections are proposed during walk-throughs, document the
proposed changes in the minutes but do not implement them
until a formal approved specification modification is received.
183
Section 10 - Keys to Success
Don't "gold plate". Implement only what is required. Often
developers and analysts think of additional "little" capabilities or
changes that would make the system better in their view. Again,
these little items add up over time and can cause a delay in the
schedule. In addition, deviations from the approved design may
not satisfy the requirements.
Don't overstaff. especially early in the project. Bring people
onto the project only when there is productive work for them to
do. A small senior team is best equipped to organize and
determine the direction of the project at the beginning.
However, be careful to provide adequate staff for a thorough
requirements analysis. Early in the project, when there are
mostly 'soft' products (e.g., requirements analysis and design
reports), it is often hard to gauge the depth of understanding of
the team. Be sure the project has enough of the right people to
get off to a good start.
Don't assume that an intermediate schedule slippage can be
absorbed later. Managers and overly optimistic developers tend
to assume that the team will be more productive later on in a
phase. The productivity of the team will not change appreciably
as the project approaches completion of a phase, especially in the
later development phases when the process is more sequential.
Since little can be done to compress the schedule during the later
life cycle phases, adjust the delivery schedule or assign
additional senior personnel to the project as soon as this problem
is detected.
Likewise, don't assume that late pieces of design or code will fit
into the system with less integration effort than the other parts of
the system required. The developers' work will not be of higher
quality later in the project than it was earlier.
Don't relax standards in an attempt to reduce costs. Relaxing
standards in an attempt to meet a near-term deadline tends to
lower the quality of intermediate products and leads to more
rework later in the life cycle. It also sends the message to the
team that schedules are more important than quality.
Don't assume that a large amount of documentation ensures
success. Each phase of the life cycle does not necessarily
require a formally produced document to provide a clear starting
point for the next phase. Determine the level of formality and
amount of detail required in the documentation based on the
project size, life cycle duration, and lifetime of the system.
184
Acronyms
ACRONYMS
AGSS attitude ground support system
ATR Assistant Technical Representative
ATRR acceptance test readiness review
BDR build design review
CASE computer-aided software engineering
CCB configuration control board
CDR critical design review
CM configuration management
CMS Code Management System
COF component origination form
CPU central processing unit
CRF change report form
DBMS database management system
DCL Digital Command Language
DEC Digital Equipment Corporation
DFD data flow diagram
DSF development status form
FCA functional configuration audit
FDF Flight Dynamics Facility
GSFC Goddard Space Flight Center
IAD interface agreement document
ICD interface control document
I/O input/output
ISPF Interactive System Productivity Facility
IV&V independent verification and validation
JCL job control language
KSLOC thousand source lines of code
LSE language-sensitive editor
MOI memorandum of information
MOU memorandum of understanding
NASA National Aeronautics and Space Administration
COD object-oriented design
PC personal computer
PCA physical configuration audit
PCSF project completion statistics form
185
Acronyms
ACRONYMS (cont.)
PDL program design language (pseudocode)
PDR preliminary design review
PEF project estimates form
PRF personnel resources form
PSRR preliminary system requirements review
Q\ quality assurance
Q&A questions and answers
RID review item disposition
RSL reusable software library
SCR system concept review
SDE Software Development Environment
SDMP software development/management plan
SEF subjective evaluation form
SEL Software Engineering Laboratory
SEN software engineering notebook
SFR software failure report
SIRD support instrumentation requirements document
SLOC source lines of code
SME Software Management Environment
SOC system and operations concept
SORD systems operations requirements document
SPR software problem report
SRR system requirements review
SSR software specifications review
STL Systems Technology Laboratory
STR software trouble report
STRR system test readiness review
TBD to be determined
186
References
REFERENCES
1. Software Engineering Laboratory, SEL-8 1 - 1 04, The Software Engineering Laboratory,
D. N. Card et al., February 1982
2. P. A. Currit, M. Dyer, and H.D. Mills, "Certifying the Reliability of Software, " IEEE
Transactions on Software Engineering, Vol. SE-12, No. 1, January 1986, pp. 3-11
3. Software Engineering Laboratory, SEL-90-002, The Cleanroom Case Study in the Software
Engineering Laboratory: Project Description and Early Analysis, S. Green et al.,
March 1990
4. — , SEL-91 -004, The Software Engineering Laboratory (SEL) Cleanroom Process Model,
S. Green, November 1991
5. H.D. Rombach, B.T. Ulcry, and J. D. Valctt, "Measurement Based Improvement of
Maintenance in the SEL," Proceedings of the Fourteenth Annual Software Engineering
Workshop, SEL-89-007, November 1 989
6. H.D. Rombach, B.T. Ulcry, and J. D. Valctt, "Towards Full Life Cycle Control: Adding
Maintenance Measurement to the SEL," Journal of Systems and Software; scheduled for
publication in 1992
7. F. McGarry and R. Pajerski, "Towards Understanding Software — 15 Years in the
SEL," Proceedings of the Fifteenth Annual Software Engineering Workshop, SEL-90-006,
November 1990
8. J.W. Bailey and V. R. Basili, "Software Reclamation: Improving Post-Development
Reusability," Proceedings of the Eighth Annual National Conference on Ada Technology,
March 1990. Also published in Collected Software Engineering Papers: Volume VIII,
SEL-90-005, November 1990
9. M. Stark, "On Designing Parametrized Systems Using Ada," Proceedings of the Seventh
Washington Ada Symposium, June 1990. Also published in Collected Software Engineering
Papers: Volume VIII, SEL-90-005, November 1990
1 0. Flight Dynamics Division Code 550, NASA FDD/552-90/083, Extreme Ultraviolet Explorer
(EUVE) Attitude Ground Support System (AGSS) Software Development History,
B. Groveman et al., October 1990
11. G. Booch, Object-Oriented Design (with Applications), Benjamin/Cummings: Redwood
City, CA, 1991
12. Software Engineering Laboratory, SEL-84-101 , Manager's Handbook for Software
Development (Revision I), L. Landis, F. McGarry, S. Waligora, et al., November 1990
187
References
13. E. Yourdon and L. L. Constantino, Structured Design, Yourdon Press: NY, 1978
14. T. DeMarco, Structured Analysis and System Specification, Yourdon, Inc.: NY, 1978
15. P. Ward and S. Mellor, Structured Development for Real-Time Systems, Prentice-Hall:
Englewood Cliffs, NJ, 1985
16. P. Coad and E. Yourdon, Object-Oriented Analysis, Yourdon Press: NY, 1991
17. Software Engineering Laboratory, SEL-86-002, General Object-Oriented Software
Development, E. Seidewitz and M. Stark, August 1986
18. — .SEL-83-001, An Approach to Software Cost Estimation, F. E. McGarry, G. Page,
D. N. Card, et al., February 1984
19. — .SEL-92-002, Data Collection Procedures for the Software Engineering Laboratory (SEL)
Database, G. Heller, J. Valctt, M. Wild, March 1992
20. IBM, Systems Integration Division, TR. 86.00002, A Design Method for Cleanroom
Software Development, M. Dyer, August 1983
21. H. Mills, "Stepwise Refinement and Verification in Box Structured Systems, " IEEE
Computer, June 1988
22. Software Engineering Laboratory, SEL-87-002, Ada Style Guide (Version 1.1),
E. Seidewitz et al., May 1987
23. — , SEL-86-001 , Programmer's Handbook for Flight Dynamics Software Development,
R. Wood and E. Edwards, March 1986
24. R. C. Lingen, H. D. Mills, and B. I. Witt, Structured Programming: Theory and Practice,
Addison- Wesley: Reading, Mass., 1979
25. Software Engineering Laboratory, SEL-85-001 , A Comparison of Software Verification
Techniques, D. Card, R. Sclby, F. McGarry, et al., April 1985
26. — , SEL-85-005, Software Verification and Testing, D. Card, B. Edwards, F. McGarry,
et al., December 1985
27. Flight Dynamics Division Code 550, 552-FDD-92/00 1 R 1 UD0, Flight Dynamics Software
Development Environment (FDlSDE): SDE Version 4.2.0 User's Guide: Revision J,
M. Durbeck and V. Hensley, February 1992
188
Bibliography
STANDARD BIBLIOGRAPHY OF SEL LITERATURE
The technical papers, memorandums, and documents listed in this bibliography are organized into
two groups. The first group is composed of documents issued by the Software Engineering Labora-
tory (SEL) during its research and development activities. The second group includes materials that
were published elsewhere but pertain to SEL activities.
SEL-ORIGINATED DOCUMENTS
SEL-76-00 1, Proceedings From the First Summer Software Engineering Workshop, August 1976
SEL-77-002, Proceedings From the Second Summer Software Engineering Workshop, September
1977
SEL-77-004, A Demonstration ofAXESforNAVPAK, M. Hamilton and S. Zeldin, September 1977
SEL-77-005, GSFC NAVPAK Design Specifications Languages Study, P. A. Scheffer and
C.E.Velez, October 1977
SEL-78-005, Proceedings From the Third Summer Software Engineering Workshop, September
1978
SEL-78-006, GSFC Software Engineering Research Requirements Analysis Study, P. A. Scheffer
and C. E. Velez, November 1978
SEL-78-007, Applicability of the Rayleigh Curve to the SEL Environment, T. E. Mapp, December
1978
SEL-78-302, FORTRAN Static Source Code Analyzer Program (SAP) User's Guide (Revision 3),
W. J. Decker, W. A. Taylor, et al., July 1986
SEL-79-002, The Software Engineering Laboratory: Relationship Equations, K. Freburger and
V. R. Basili, May 1979
SEL-79-003, Common Software Module Repository (CSMR) System Description and User's Guide,
C. E. Goorevich, A. L. Green, and S. R. Waligora, August 1979
SEL-79-004, Evaluation of the Caine, Farber, and Gordon Program Design Language (PDL) in the
Goddard Space Flight Center (GSFC) Code 580 Software Design Environment, C. E. Goorevich,
A. L. Green, and W. J. Decker, September 1979
SEL-79-005, Proceedings From the Fourth Summer Software Engineering Workshop, November
1979
SEL-80-002, Multi-Level Expression Design Language-Requirement Lev el (MEDL-R) System Eval-
uation, W. J. Decker and C. E. Goorevich, May 1980
SEL-80-003, Multimission Modular Spacecraft Ground Support Software System (MMSIGSSS)
State-of-the-Art Computer Systems/Compatibility Study, T. Welden, M. McClellan, and P. Liebertz,
May 1980
SEL-80-005, A Study of the Musa Reliability Model, A. M. Miller, November 1980
SEL-80-006, Proceedings From the Fifth Annual Software Engineering Workshop, November 1980
189
Bibliography
SEL-80-007, An Appraisal of Selected Cost/Resource Estimation Models for Software Systems,
J. F. Cook and F. E. McGarry, December 1980
SEL-80-008, Tutorial on Models and Metrics for Software Management and Engineering,
V. R. Basili, 1980
SEL-81-008, Cost and Reliability Estimation Models (CAREM) User's Guide, J. F. Cook and
E. Edwards, February 1981
SEL-81-009, Software Engineering Laboratory Programmer Workbench Phase 1 Evaluation,
W. J. Decker and F. E. McGarry, March 1981
SEL-81-011, Evaluating Software Development by Analysis of Change Data, D. M. Weiss,
November 1981
SEL-81-012, TheRayleigh Curve as a Model for Effort Distribution Over the Life of Medium Scale
Software Systems, G. O. Picasso, December 1981
SEL-81-013, Proceedings of the Sixth Annual Software Engineering Workshop, December 1981
SEL-81-014, Automated Collection of Software Engineering Data in the Software Engineering
Laboratory (SEL), A. L. Green, W. J. Decker, and F. E. McGarry, September 1981
SEL-81-101, Guide to Data Collection, V. E. Church, D. N. Card, F. E. McGarry, et al., August
1982
SEL-81-104, The Software Engineering Laboratory, D. N. Card, F. E. McGarry, G. Page, et al.,
February 1982
SEL-81-107, Software Engineering Laboratory (SEL) Compendium of Tools (Revision I),
W. J. Decker, W. A. Taylor, E. J. Smith, et al., February 1982
SEL-81-110, Evaluation of an Independent Verification and Validation (W&V) Methodology for
Flight Dynamics, G. Page, F. E. McGarry, and D. N. Card, June 1985
SEL-8 1-305, Recommended Approach to Software Development (Revision 3), L. Landis, F. E.
McGarry, S. Waligora, et al., June 1992
SEL-82-001, Evaluation of Management Measures of Software Development, G. Page, D. N. Card,
and F. E. McGarry, September 1982, vols. 1 and 2
SEL-82-004, Collected Software Engineering Papers: Volume 1, July 1982
SEL-82-007, Proceedings of the Seventh Annual Software Engineering Workshop, December 1982
SEL-82-008, Evaluating Software Development by Analysis of Changes: The Data From the Soft-
ware Engineering Laboratory, V. R. Basili and D. M. Weiss, December 1982
SEL-82-102, FORTRAN Static Source Code Analyzer Program (SAP) System Description (Revi-
sion 1), W. A. Taylor and W. J. Decker, April 1985
SEL-82-105, Glossary of Software Engineering Laboratory Terms, T. A. Babst, M. G. Rohleder,
and F. E. McGarry, October 1983
190
Bibliography
SEL-82-1006, Annotated Bibliography of Software Engineering Laboratory Literature,
L. Morusiewicz and J. Valett, November 1991
SEL-83-001 , An Approach to Software Cost Estimation, F. E. McGarry, G. Page, D. N. Card, et al.,
February 1984
SEL-83-002, Measures and Metrics for Software Development, D. N. Card, F. E. McGarry,
G. Page, et al., March 1984
SEL-83-003, Collected Software Engineering Papers: Volume II, November 1983
SEL-83-006, Monitoring Software Development Through Dynamic Variables, C. W. Doerflinger,
November 1983
SEL-83-007, Proceedings of the Eighth Annual Software Engineering Workshop, November 1983
SEL-83-106, Monitoring Software Development Through Dynamic Variables (Revision I),
C. W. Doerflinger, November 1989
SEL-84-003, Investigation of Specification Measures for the Software Engineering Laboratory
(SEL), W. W. Agresti, V. E. Church, and F. E. McGarry, December 1984
SEL-84-004, Proceedings of the Ninth Annual Software Engineering Workshop, November 1984
SEL-84-101, Manager's Handbook for Software Development (Revision I), L. Landis,
F. E. McGarry, S. Waligora, et al., November 1990
SEL-85-001, A Comparison of Software Verification Techniques, D. N. Card, R. W. Selby, Jr.,
F. E. McGarry, et al., April 1985
SEL-85-002, Ada Training Evaluation and Recommendations From the Gamma Ray Observatory
Ada Development Team, R. Murphy and M. Stark, October 1985
SEL-85-003, Collected Software Engineering Papers: Volume III, November 1985
SEL-85-004, Evaluations of Software Technologies: Testing, CLEANROOM, and Metrics,
R. W. Selby, Jr., and V. R. Basili, May 1985
SEL-85-005, Software Verification and Testing, D. N. Card, E. Edwards, F. McGarry, and C. Antle,
December 1985
SEL-85-006, Proceedings of the Tenth Annual Software Engineering Workshop, December 1985
SEL-86-001, Programmer's Handbook for Flight Dynamics Software Development, R. Wood and
E. Edwards, March 1986
SEL-86-002, General Object-Oriented Software Development, E. Seidewitz and M Stark, August
1986
SEL-86-003, Flight Dynamics System Software Development Environment (FDS/SDE) Tutorial,
J. Buell and P. Myers, July 1986
SEL-86-004, Collected Software Engineering Papers: Volume IV, November 1986
SEL-86-005, Measuring Software Design, D. N. Card et al., November 1986
c-s
191
Bibliography
SEL-86-006, Proceedings of the Eleventh Annual Software Engineering Workshop, December 1 986
SEL-87 -001, Product Assurance Policies and Procedures for Flight Dynamics Software Develop-
ment, S. Perry et al., March 1987
SEL-87-002, Ada Style Guide (Version 1.1), E. Seidewitz et al., May 1987
SEL-87 -003, Guidelines for Applying the Composite Specification Model (CSM), W. W. Agresti,
June 1987
SEL-87 -004, Assessing the Ada Design Process and Its Implications: A Case Study, S. Godfrey,
C. Brophy, et al., July 1987
SEL-87 -009, Collected Software Engineering Papers: Volume V, November 1987
SEL-87-010, Proceedings of the Twelfth Annual Software Engineering Workshop, December 1987
SEL-88-001 , System Testing of a Production Ada Project: The GRODY Study, J. Seigle, L. Esker,
and Y. Shi, November 1988
SEL-88-002, Collected Software Engineering Papers: Volume VI, November 1988
SEL-88-003, Evolution of Ada Technology in the Flight Dynamics Area: Design Phase Analysis,
K. Quimby and L. Esker, December 1988
SEL-88-004, Proceedings of the Thirteenth Annual Software Engineering Workshop, November
1988
SEL-88-005, Proceedings of the First NASA Ada User's Symposium, December 1988
SEL-89-002, Implementation of a Production Ada Project: The GRODY Study, S. Godfrey and
C. Brophy, September 1989
SEL-89-003, Software Management Environment (SME) Concepts and Architecture, W. Decker and
J. Valett, August 1989
SEL-89-004, Evolution of Ada Technology in the Flight Dynamics Area: Implementation/Testing
Phase Analysis, K. Quimby, L. Esker, L. Smith, M. Stark, and F. McGarry, November 1989
SEL-89-005, Lessons Learned in the Transition to Ada From FORTRAN at NASA/Goddard,
C. Brophy, November 1989
SEL-89-006, Collected Software Engineering Papers: Volume VII, November 1989
SEL-89-007, Proceedings of the Fourteenth Annual Software Engineering Workshop, November
1989
SEL-89-008, Proceedings of the Second NASA Ada Users' Symposium, November 1989
SEL-89-101, Software Engineering Laboratory (SEL) Database Organization and User's Guide
(Revision 1), M. So, G. Heller, S. Steinberg, K. Pumphrey, and D. Spiegel, February 1990
SEL-90-001 , Database Access Manager for the Software Engineering Laboratory (DAMSEL)
User's Guide, M. Buhler, K. Pumphrey, and D. Spiegel, March 1990
192
Bibliography
SEL-90-002, The Cleanroom Case Study in the Software Engineering Laboratory: Project Descrip-
tion and Early Analysis, S. Green et al., March 1990
SEL-90-003, A Study of the Portability of an Ada System in the Software Engineering Laboratory
(SEL), L. O. Jun and S. R. Valett, June 1990
SEL-90-004, Gamma Ray Observatory Dynamics Simulator in Ada (GRODY) Experiment Sum-
mary, T. McDermott and M. Stark, September 1990
SEL-90-005, Collected Software Engineering Papers: Volume VIII, November 1990
SEL-90-006, Proceedings of the Fifteenth Annual Software Engineering Workshop, November 1 990
SEL-91-001, Software Engineering Laboratory (SEL) Relationships, Models, and Management
Rules, W. Decker, R. Hendrick, and J. Valett, February 1991
SEL-9 1 -003 , Software Engineering Laboratory (SEL) Ada Performance Study Report, E. W. Booth
and M.E. Stark, July 1991
SEL-91-004, Software Engineering Laboratory (SEL) Cleanroom Process Model, S. Green,
November 1991
SEL-9 1-005, Collected Software Engineering Papers: Volume DC, November 1991
SEL-9 1-006, Proceedings of the Sixteenth Annual Software Engineering Workshop, December
1991
SEL-91-102, Software Engineering Laboratory (SEL) Data and Information Policy (Revision I),
F. McGarry, August 1991
SEL-92-001, Software Management Environment (SME) Installation Guide, D. Kistler, January
1992
SEL-92-002, Data Collection Procedures for the Software Engineering Laboratory (SEL) Data-
base, G. Heller, March 1992
SEL-RELATED LITERATURE
4Agresti, W. W., V. E. Church, D. N. Card, and P. L. Lo, "Designing With Ada for Satellite Simula-
tion: A Case Study," Proceedings of the First International Symposium on Ada for the NASA Space
Station, June 1986
2Agresti, W. W., F. E. McGarry, D. N. Card, et al., "Measuring Software Technology," Program
Transformation and Programming Environments. New York: Springer-Verlag, 1984
bailey, J. W., and V. R. Basili, "A Meta-Model for Software Development Resource Expenditures,"
Proceedings of the Fifth International Conference on Software Engineering. New York: IEEE Com-
puter Society Press, 1981
8Bailey, J. W., and V. R. Basili, "Software Reclamation: Improving Post-Development Reusability,"
Proceedings of the Eighth Annual National Conference on Ada Technology, March 1990
1BasiIi, V. R., "Models and Metrics for Software Management and Engineering," ASME Advances
in Computer Technology, January 1980, vol. 1
193
Bibliography
Basili, V. R., Tutorial on Models and Metrics for Software Management and Engineering.
New York: IEEE Computer Society Press, 1980 (also designated SEL-80-008)
3Basili, V. R., "Quantitative Evaluation of Software Methodology," Proceedings of the First Pan-
Pacific Computer Conference, September 1985
7Basili, V. R., Maintenance = Reuse-Oriented Software Development, University of Maryland,
Technical Report TR-2244, May 1989
7Basili, V. R., Software Development: A Paradigm for the Future, University of Maryland, Tech-
nical Report TR-2263, June 1989
8Basili, V. R., ""Viewing Maintenance of Reuse-Oriented Software Development," IEEE Software,
January 1990
1Basili, V. R., and J. Beane, "Can the Parr Curve Help With Manpower Distribution and Resource
Estimation Problems?," Journal of Systems and Software, February 1981, vol. 2, no. 1
9Basili, V. R., and G. Caldiera, .A Reference Architecture for the Component Factory, University of
Maryland, Technical Report TR-2607, March 1991
1Basili, V. R., and K. Freburger, "Programming Measurement and Estimation in the Software Engi-
neering Laboratory," Journal of Systems and Software, February 1981, vol. 2, no. 1
3Basili, V. R., and N. M. Panlilio-Yap, "Finding Relationships Between Effort and Other Variables
in the SEL," Proceedings of the International Computer Software and Applications Conference, Oc-
tober 1985
4Basili, V. R., and D. Patnaik, A Study on Fault Prediction and Reliability Assessment in the SEL
Environment, University of Maryland, Technical Report TR-1699, August 1986
2Basili, V. R., and B. T. Perricone, "Software Errors and Complexity: An Empirical Investigation,"
Communications of the ACM, January 1984, vol. 27, no. 1
1Basili, V. R., and T. Phillips, "Evaluating and Comparing Software Metrics in the Software Engi-
neering Laboratory," Proceedings of the ACM SIGMETRICS Symposium/Workshop: Quality
Metrics, March 1981
3Basili, V. R., and C. L. Ramsey, "ARROWSMITH-P — A Prototype Expert System for Software
Engineering Management," Proceedings of the IEEE/MITRE Expert Systems in Government Sympo-
sium, October 1985
Basili, V. R., and J. Ramsey, Structural Coverage of Functional Testing, University of Maryland,
Technical Report TR-1442, September 1984
Basili, V. R., and R. Reiter, "Evaluating Automatable Measures for Software Development,"
Proceedings of the Workshop on Quantitative Software Models for Reliability, Complexity, and Cost.
New York: IEEE Computer Society Press, 1979
5Basili, V. R., and H. D. Rombach, 'Tailoring the Software Process to Project Goals and Environ-
ments," Proceedings of the 9th International Conference on Software Engineering, March 1987
5Basili, V. R., and H. D. Rombach, 'TAME: Tailoring an Ada Measurement Environment,"
Proceedings of the Joint Ada Conference, March 1987
194
Bibliography
5Basili, V. R., and H. D. Rombach, 'TAME: Integrating Measurement Into Software Environ-
ments," University of Maryland, Technical Report TR-1764, June 1987
6Basili, V. R., and H. D. Rombach, "The TAME Project: Towards Improvement-Oriented Software
Environments," IEEE Transactions on Software Engineering, June 1988
^Basili, V. R., and H. D. Rombach, Towards A Comprehensive Framework for Reuse: A Reuse-
Enabling Software Evolution Environment, University of Maryland, Technical Report TR-2158,
December 1988
8Basili, V. R., and H. D. Rombach, Towards A Comprehensive Framework for Reuse: Model-Based
Reuse Characterization Schemes, University of Maryland, Technical Report TR-2446, April 1990
9Basili, V. R., and H. D. Rombach, Support for Comprehensive Reuse, University of Maryland,
Technical Report TR-2606, February 1991
3Basili, V. R., and R. W. Selby, Jr., "Calculation and Use of an Environment's Characteristic Soft-
ware Metric Set," Proceedings of the Eighth International Conference on Software Engineering.
New York: DEEE Computer Society Press, 1985
Basili, V. R., and R. W. Selby, Jr., Comparing the Effectiveness of Software Testing Strategies, Uni-
versity of Maryland, Technical Report TR-1501, May 1985
3Basili, V. R., and R. W. Selby, Jr., 'Tour Applications of a Software Data Collection and Analysis
Methodology," Proceedings of the NATO Advanced Study Institute, August 1985
5Basili, V. R., and R. Selby, "Comparing the Effectiveness of Software Testing Strategies," IEEE
Transactions on Software Engineering, December 1987
9Basili, V. R., and R. W. Selby, "Paradigms for Experimentation and Empirical Studies in Software
Engineering," Reliability Engineering and System Safety, January 1991
4Basili, V. R., R. W. Selby, Jr., and D. H. Hutchens, "Experimentation in Software Engineering,"
IEEE Transactions on Software Engineering, July 1986
2Basili, V. R., R. W. Selby, and T. Phillips, "Metric Analysis and Data Validation Across FORTRAN
Projects," IEEE Transactions on Software Engineering, November 1983
2Basili, V. R., and D. M. Weiss, A Methodology for Collecting Valid Software Engineering Data,
University of Maryland, Technical Report TR-1235, December 1982
3Basili, V. R., and D. M. Weiss, "A Methodology for Collecting Valid Software Engineering Data,"
IEEE Transactions on Software Engineering, November 1984
1Basili, V. R., and M. V. Zelkowitz, "The Software Engineering Laboratory: Objectives,"
Proceedings of the Fifteenth Annual Conference on Computer Personnel Research, August 1977
Basili, V. R., and M. V. Zelkowitz, "Designing a Software Measurement Experiment," Proceedings
of the Software Life Cycle Management Workshop, September 1977
1Basili, V. R., and M. V. Zelkowitz, "Operation of the Software Engineering Laboratory," Proceed-
ings of the Second Software Life Cycle Management Workshop, August 1978
195
Bibliography
'Basili, V. R., and M. V. Zelkowitz, "Measuring Software Development Characteristics in the Local
Environment," Computers and Structures, August 1978, vol. 10
Basili, V. R., and M. V. Zelkowitz, "Analyzing Medium Scale Software Development," Proceedings
of the Third International Conference on Software Engineering. New York: IEEE Computer Society
Press, 1978
9Booth, E. W., and M. E. Stark, "Designing Configurable Software: COMPASS Implementation
Concepts," Proceedings ofTri-Ada 1991, October 1991
9Briand, L. C, V. R. Basili, and W. M. Thomas,^ Pattern Recognition Approach for Software Engi-
neering Data Analysis, University of Maryland, Technical Report TR-2672, May 1991
5Brophy, C. E., W. W. Agresti, and V. R. Basili, "Lessons Learned in Use of Ada-Oriented Design
Methods," Proceedings of the Joint Ada Conference, March 1987
6Brophy, C. E., S. Godfrey, W. W. Agresti, and V. R. Basili, "Lessons Learned in the Implementation
Phase of a Large Ada Project," Proceedings of the Washington Ada Technical Conference, March
1988
2Card, D. N., "Early Estimation of Resource Expenditures and Program Size," Computer Sciences
Corporation, Technical Memorandum, June 1982
2Card, D. N., "Comparison of Regression Modeling Techniques for Resource Estimation," Com-
puter Sciences Corporation, Technical Memorandum, November 1982
3Card, D. N., "A Software Technology Evaluation Program," Annais do XVIII Congresso Nacional
de Informatica, October 1985
5Card, D. N., and W. W. Agresti, "Resolving the Software Science Anomaly," The Journal of
Systems and Software, 1987
6Card, D. N., and W. W. Agresti, "Measuring Software Design Complexity," The Journal of Systems
and Software, June 1988
4Card, D. N., V. E. Church, and W. W. Agresti, "An Empirical Study of Software Design Practices,"
IEEE Transactions on Software Engineering, February 1986
Card, D. N., V. E. Church, W. W. Agresti, and Q. L. Jordan, "A Software Engineering View of Flight
Dynamics Analysis System," Parts I and U, Computer Sciences Corporation, Technical Memoran-
dum, February 1984
Card, D. N., Q. L. Jordan, and V. E. Church, "Characteristics of FORTRAN Modules," Computer
Sciences Corporation, Technical Memorandum, June 1984
5Card, D. N., F. E. McGarry, and G. T. Page, "Evaluating Software Engineering Technologies,"
IEEE Transactions on Software Engineering, July 1987
3Card, D. N., G. T. Page, and F. E. McGarry, "Criteria for Software Modularization," Proceedings
of the Eighth International Conference on Software Engineering. New York: IEEE Computer
Society Press, 1985
^hen, E., and M. V. Zelkowitz, "Use of Cluster Analysis To Evaluate Software Engineering Meth-
odologies," Proceedings of the Fifth International Conference on Software Engineering. New York:
IEEE Computer Society Press, 1981
196
Bibliography
4Church, V. E., D. N. Card, W. W. Agresti, and Q. L. Jordan, "An Approach for Assessing Software
Prototypes," ACM Software Engineering Notes, July 1986
2Doerflinger, C. W., and V. R. Basili, "Monitoring Software Development Through Dynamic Vari-
ables," Proceedings of the Seventh International Computer Software and Applications Conference.
New York: IEEE Computer Society Press, 1983
Doubleday, D., ASAP: An Ada Static Source Code Analyzer Program, University of Maryland, Tech-
nical Report TR-1895, August 1987 (NOTE: 100 pages long)
6Godfrey, S., and C. Brophy, "Experiences in the Implementation of a Large Ada Project," Proceed-
ings of the 1988 Washington Ada Symposium, June 1988
Hamilton, M., and S. Zeldin, A Demonstration of AXES for NAVPAK, Higher Order Software, Inc.,
TR-9, September 1977 (also designated SEL-77-005)
^Jeffery, D. R., and V. Basili, Characterizing Resource Data: A Model for Logical Association of
Software Data, University of Maryland, Technical Report TR-1848, May 1987
6Jeffery, D. R., and V. R. Basili, "Validating the TAME Resource Data Model," Proceedings of the
Tenth International Conference on Software Engineering, April 1988
^Mark, L., and H. D. Rombach, A Meta Information Base for Software Engineering, University of
Maryland, Technical Report TR-1765, July 1987
''Mark, L., and H. D. Rombach, "Generating Customized Software Engineering Information Bases
From Software Process and Product Specifications," Proceedings of the 22nd Annual Hawaii In-
ternational Conference on System Sciences, January 1989
->McGarry, F. E., and W. W. Agresti, "Measuring Ada for Software Development in the Software En-
gineering Laboratory (SEL)," Proceedings of the 21st Annual Hawaii International Conference on
System Sciences, January 1988
7McGarry, F., L. Esker, and K. Quimby, "Evolution of Ada Technology in a Production Software
Environment," Proceedings of the Sixth Washington Ada Symposium (WADAS), June 1989
3McGarry, F. E., J. Valett, and D. Hall, "Measuring the Impact of Computer Resource Quality on the
Software Development Process and Product," Proceedings of the Hawaiian International Confer-
ence on System Sciences, January 1985
National Aeronautics and Space Administration (NASA), NASA Software Research Technology
Workshop (Proceedings), March 1980
3Page, G., F. E. McGarry, and D. N. Card, "A Practical Experience With Independent Verification
and Validation," Proceedings of the Eighth International Computer Software and Applications Con-
ference, November 1984
^Ramsey, C. L., and V. R. Basili, An Evaluation of Expert Systems for Software Engineering
Management, University of Maryland, Technical Report TR-1708, September 1986
Ramsey, J., and V. R. Basili, "Analyzing the Test Process Using Structural Coverage," Proceedings
of the Eighth International Conference on Software Engineering. New York: IEEE Computer
Society Press, 1985
197
Bibliography
5Rombach, H. D., "A Controlled Experiment on the Impact of Software Structure on Maintain-
ability," IEEE Transactions on Software Engineering, March 1987
8Rombach, H. D., "Design Measurement: Some Lessons Learned," IEEE Software, March 1990
9Rombach, H. D., "Software Reuse: A Key to the Maintenance Problem," Butterworth Journal of
Information and Software Technology, January/February 1991
^ombach, H. D., and V. R. Basili, "Quantitative Assessment of Maintenance: An Industrial Case
Study," Proceedings From the Conference on Software Maintenance, September 1987
^ombach, H. D., and L. Mark, "Software Process and Product Specifications: A Basis for Gener-
ating Customized SE Information Bases," Proceedings of the 22nd Annual Hawaii International
Conference on System Sciences, January 1989
^Rombach, H. D., and B. T. Ulery, Establishing a Measurement Based Maintenance Improvement
Program: Lessons Learned in the SEL, University of Maryland, Technical Report TR-2252, May
1989
6Seidewitz, E., "Object-Oriented Programming in Smalltalk and Ada," Proceedings of the 1987
Conference on Object-Oriented Programming Systems, Languages, and Applications, October 1987
5Seidewitz, E., "General Object-Oriented Software Development: Background and Experience,"
Proceedings of the 21st Hawaii International Conference on System Sciences, January 1988
6Seidewitz, E., "General Object-Oriented Software Development with Ada: A Life Cycle Ap-
proach," Proceedings of the CASE Technology Conference, April 1988
9Seidewitz, E., "Object-Oriented Programming Through Type Extension in Ada 9X," Ada Letters,
March/April 1991
4Seidewitz, E., and M. Stark, 'Towards a General Object-Oriented Software Development Method-
ology," Proceedings of the First International Symposium on Ada for the NASA Space Station, June
1986
9Seidewitz, E., and M. Stark, "An Object-Oriented Approach to Parameterized Software in Ada,"
Proceedings of the Eighth Washington Ada Symposium, June 1991
8Stark, M., "On Designing Parametrized Systems Using Ada," Proceedings of the Seventh
Washington Ada Symposium, June 1990
7Stark, M. E. and E. W. Booth, "Using Ada to Maximize Verbatim Software Reuse," Proceedings
ofTRI-Ada 1989, October 1989
5Stark, M., and E. Seidewitz, 'Towards a General Object-Oriented Ada Lifecycle," Proceedings of
the Joint Ada Conference, March 1987
8Straub, P. A., and M. V. Zelkowitz, "PUC: A Functional Specification Language for Ada," Pro-
ceedings of the Tenth International Conference of the Chilean Computer Science Society, July 1990
7Sunazuka, T., and V. R. Basili, Integrating Automated Support for a Software Management Cycle
Into the TAME System, University of Maryland, Technical Report TR-2289, July 1989
198
Bibliography
Turner, C, and G. Caron, A Comparison of RADC and NASAISEL Software Development Data,
Data and Analysis Center for Software, Special Publication, May 1981
Turner, C, G. Caron, and G. Brement, NASAISEL Data Compendium, Data and Analysis Center for
Software, Special Publication, April 1981
5Valett, J. D., and F. E. McGarry, "A Summary of Software Measurement Experiences in the Soft-
ware Engineering Laboratory," Proceedings of the 2 1 st Annual Hawaii International Conference on
System Sciences, January 1988
^Weiss, D. M., and V. R. Basili, "Evaluating Software Development by Analysis of Changes: Some
Data From the Software Engineering Laboratory," IEEE Transactions on Software Engineering,
February 1985
5Wu, L., V. R. Basili, and K. Reed, "A Structure Coverage Tool for Ada Software Systems,"
Proceedings of the Joint Ada Conference, March 1987
1Zelkowitz, M. V., "Resource Estimation for Medium-Scale Software Projects," Proceedings of the
Twelfth Conference on the Interface of Statistics and Computer Science. New York: IEEE Computer
Society Press, 1979
2Zelkowitz, M. V, "Data Collection and Evaluation for Experimental Computer Science Research,"
Empirical Foundations for Computer and Information Science (Proceedings), November 1982
6Zelkowitz, M. V., "The Effectiveness of Software Prototyping: A Case Study," Proceedings of the
26th Annual Technical Symposium of the Washington, D. C, Chapter of the ACM, June 1987
6Zelkowitz, M. V., "Resource Utilization During Software Development," Journal of Systems and
Software, 1988
8Zelkowitz, M. V., "Evolution Towards Specifications Environment: Experiences With Syntax
Editors," Information and Software Technology, April 1990
Zelkowitz, M. V., and V. R. Basili, "Operational Aspects of a Software Measurement Facility,"
Proceedings of the Software Life Cycle Management Workshop, September 1977
199
Bibliography
NOTES:
'This article also appears in SEL-82-004, Collected Software Engineering Papers: Volume I, July
1982.
2This article also appears in SEL-83-003, Collected Software Engineering Papers: Volume II,
November 1983.
3This article also appears in SEL-85-003, Collected Software Engineering Papers: Volume III,
November 1985.
4This article also appears in SEL-86-004, Collected Software Engineering Papers: Volume IV,
November 1986.
5This article also appears in SEL-87-009, Collected Software Engineering Papers: Volume V,
November 1987.
6This article also appears in SEL-88-002, Collected Software Engineering Papers: Volume VI,
November 1988.
7This article also appears in SEL-89-006, Collected Software Engineering Papers: Volume VII,
November 1989.
8This article also appears in SEL-90-005, Collected Software Engineering Papers: Volume VIII,
November 1990.
*This article also appears in SEI^91-005, Collected Software Engineering Papers: Volume IX,
November 1991.
200
Index
INDEX
Ada 15,72
compilation 124
CPU time and 97
design 73
Fig. 5-4 73
detailed design phase and 93
environment 93, 95
implementation phase and 95
libraries 95
LSE 95
package specifications 68, 74, 89, 93
PDL 74,89,93,97
SEL environment and 2
specifications 68
style 95
testing and 120
Analysis
code 70,76,77,91
domain 15
object-oriented see OOD
report see under Documents
requirements see under Requirements
structured 22,28,44
development team and 7, 42
tools 49,70,76,91, 139
Analysts
noiecard 7
acceptance test team 10, 86, 162
communication and 64, 66, 69
noiecard 27
management team and 45
requirements analysis phase 47
requirements definition team 27, 64, 66
reuse and 7
reviews and 12, 75, 80, 133
system test team 115, 137
Analyzers
code
source 124
static 77, 147, 170
FORTRAN SAP 123
RXVP80 123
VAX SCA 77, 123
performance 147, 170
Problem Program Evaluator 77
TSA/PPE (Boole & Babbage) 123, 141
VAX Performance and Coverage Analyzer
123, 141
Application specialists 30
noiecard 27
acceptance testing phase and 143
change approval and 122
code reading 119
development team 90, 93, 108, 110, 137,
150
documentation and 108, 1 10
implementation phase and 1 10
inspection team 93
reviews and 120, 121
system test team 115,137
testing and 121, 149
Audits, configuration 143, 146, 157, 176
FCA (functional configuration audit) 146
PCA (physical configuration audit) 146
B
Baseline
builds and 123
configuration management tools and 123
diagrams 71
libraries and 123
requirements and specifications document and
8, 27, 39, 45
201
Index
Baseline continued
SDMPand 54
SEL 19
SEN and 74
specific environment and 180,182
Boole & Babbage see TSA/PPE, under Analyzers
Builds 11, 12,90,99, 101, 111
activities of 110
baselines for 123
changes to 114,116,124,130
development team and 121
documentation and 69
estimates and estimation 114,127
implementation phase
Fig. 7-1 109
life-cycle phases and
Fig. 7-2 110
load module 113
errors 172
final 176
librarian and 140, 168
libraries and 153
test report forms and 147
testing see under Testing
plan see plan, build, under Documentation
programmers and 108
reviews of 108, 113, 115, 132
notecard 12
see also BDR, under Reviews
schedule 103, 132
SEN and 122
system testing phase 152
test bed 120
lest plan see under plan, under Documents
testing see under Testing
CASE (computer-aided software engineering) 49,
123
SEL environment and 2, 123
CAT see under Libraries (for software)
CCB (configuration control board) 49, 153
CDRand 102
PDR and 80
SRRand 39
Central processing unit see CPU
Change report form see under Forms
Cleanroom methodology 19
notecard 19
SEL environment and 2
see also Phase Highlights tables at beginnings
of sections
CMS (Code Management System) 122, 145
Code
AdaPDL 93
analysis see under Analysis
analyzers see Analyzers
configuration management and 123
detailed design phase 86
estimates and estimation 127
executable 77
experience and 76
libraries 69, 115
reading 110,117,120, 126,141
application specialists and 1 19
SEL 117
reviews
Fig. 7-4 118
scaffolding see drivers, under Prototypes and
prototyping
source 108
configuration management and 122
libraries 122, 127, 129, 145, 146
measure 124, 127
standards 90
unit 111
defined notecard 8
Code Management System see CMS
COF see under Forms
Components 70, 71
defined notecard 8
FDF environment and 71
origination form (COF) see under Forms
reuse of see under Reuse
reviews 92
see also Reviews
SEL and 71
SEN and 74
Computer-aided software engineering see CASE
Configuration
Analysis Tool see CAT, under Libraries
audits see Audits, configuration
control board see CCB
management 13, 69, 74, 90, 115, 116, 122,
170
acceptance test team and 144
COF and 121, 126
202
Index
Configuration continued
CRFand 128
implementation phase 115
implementation team and 1 3
management team and 142
SEN and 95, 122
source code and 122
system test team and 1 39
system testing phase 136, 145
tools 123
CPU (central processing unit) 45
time 77, 96, 97, 98, 125, 127, 150, 173
CRF see under Forms
Criteria
acceptance 10,26,181
requirements and specifications document
and 32
entry 61
notecard 7
see also Phase Highlights tables at
beginnings of sections
evaluation
acceptance testing phase 172, 173
detailed design phase 96
implementation phase 126
preliminary design phase 77
prototyping and 58
requirements analysis phase 52
requirements definition phase 3 1
system testing phase 150
exit
notecard 1
acceptance testing phase 1 77
detailed design phase 105
implementation phase 133
preliminary design phase 69, 82
requirements analysis phase 61
requirements definition phase 39
system testing phase 159
see also Phase Highlights tables at
beginnings of sections
review 12, 93
SSR 12
test 26
Critical design review see CDR, under Reviews
Customer
delivery to 10
needs and reviews 12, 69, 108, 1 14, 133,
140, 146, 149, 155
prototypes and 14
requirements definition and 6, 1 14, 137
requirements definition team managers and 27
technical representative 13, 35, 108
Dan Bricklin's Demo Program 50
Data
Table 4-1 51
abstraction of 71
collection of 1, 51, 77, 139, 150, 180
Table 5-1 77
forms for 1 8
dictionary 46
externally visible 72
now 77
Fig. 5-1 64
historical 44, 45, 52
page fault 77
requirements analysis process 42
structures 76
test 139, 140, 144, 155
Database
project histories 18
SEL 2, 120
specialist 1 19
Debuggers 123, 147
Decomposition, functional 28, 70, 71
Design
approaches and 64
detailed phase see under Phase
deviations from 1 84
documentation of
see Diagrams, Documents
inspections see Inspections
object-oriented see OOD
preliminary
review of see PDR, under Reviews
preliminary phase see under Phase
requirements and specifications document and
58
reuse and 15, 141
Developers
acceptance testing phase and 143
ATRRand 157
CMS and 123
COF and 120, 122
communication and 90, 92, 129
203
Index
Developers continued
notecard 27
configuration audits and 143
CRF and 122, 128
design phases and 16
errors and 9,64
estimates and estimation and 77
"gold-plating" habit of 184
implementation phase 9, 17
measures and 18
methods and tools of 70, 71, 73, 74, 95, 123,
124
overly optimistic 184
PDLand 74,95
practice runs and 144
preliminary design phase 64
prologs and 74, 95
prototypes and prototyping 76
requirements analysis phase 47
requirements definition team and 7, 69
reuse and 7, 27, 32, 76
reviews and 12, 64, 80, 82, 108, 1 17, 1 19
SEN and 74, 89, 95, 122, 146
SOCand 32
STL 93
testing and 119, 120, 121, 129, 132, 145,
153
training of 182
walk-throughs and 75, 87
Diagrams, design 64, 66, 68, 70, 71, 74, 75, 86,
89,91,93,95,105,141
OODand 66
Dictionary, data 46
Discrepancies see under Forms
Documents
checklists
code inspection 117, 118
code reading 120
design inspection 74, 76, 89, 93, 95
Fig. 6-3 94
SEN and 117,146
test review 120, 121, 147, 153, 176
configuration management and 13
detailed design 8, 68, 80, 86, 89, 91, 98, 99,
102, 105, 108, 113
generating Fig. 6-1 87
system description and 1 1 3
user's guide and 113
developers and 32
forms see Forms
plan
acceptance test 10, 91, 116, 129, 144
Fig. 7-8 130
contents of 142, 155, 157
exit criteria and 159
requirements and specifications
document and 10,155
system testing phase and 153
analytical test 91, 111, 116, 119, 129,
132, 137, 167
contents of 132
exit criteria and 159
build 69, 89, 90, 102, 108, 113, 115
contents of 99, 101
management team and 98, 99
preliminary 99
build test
Fig. 7-8 130
development team and 101,108,
111, 121, 129
exit criteria and 133
load module and 113
regression tests and 108, 130
development 46, 102, 181, 183
changes to 182
implementation 9
integration test 120
management see SDMP, hereunder
phase 14, 27
prototyping 54, 58
reuse 32,54,68,76
updates to 66
system test 9, 137, 144, 149, 153, 167
contents of 130, 131
execution of 132
exit criteria and 134,159
generating 9, 108, 110,113
libraries and 122
management team and 1 1 5
requirements and specifications
document and 9
small projects and 1 3
test 89,98, 122
Fig. 7-8 131
FCAand 146
reuse and 15
unit 117, 119
204
Index
see also name of specific document,
hereunder
prototyping and 14
quality assurance and 13
report
audit 147
detailed test 166, 168
discrepancy see under Forms
preliminary acceptance test 166
preliminary design 8, 64, 68, 70, 80, 82,
99
addenda to 80
contents of 80
Fig. 5-5 81
updates to 68
requirements analysis 7, 45, 46, 50, 184
contents of 54
Fig. 4-4 54
distribution of 61
SSRand 59
summary 147
test report forms see under Forms
requirements and specifications
acceptance test plan and 10, 142, 155
baseline of requirements 39
clarity of 52, 79
classification of items 44
contents of 7, 32
Fig. 3-4 34
development team and 7,44,71
errors and 149
exit criteria and 39
generating 182
Fig. 3-2 24
libraries and 50
preliminary design phase and 64
requirements analysis phase and 42, 47,
54
requirements definition phase and 32
requirements definition team and 42
reuse and 45
SOCand 22
SRRand 36,42
system test plan and 9, 146
updates to 8, 39, 44, 47, 49, 58
reuse and 15
SCR and 35
SDMP (software development/management
plan) 45, 50, 54, 69
Fig. 4-5 52
notecard 11
contents 55
Fig. 4-5 56
IV&Vand 149
managers as authors 55
prototypes and 58
updates to 99, 114
SEN (software engineering notebook) 74
audits and 146
baseline 74
configuration management 95, 122
contents of 74, 89, 95, 117, 120
detailed design phase and 91
developers and 89,95
exit criteria and 134
implementation phase and 116, 122
libraries 74, 122, 146
preliminary design phase and 70
updates to 95, 141, 146, 168
SIRD (system instrumentation requirements
document) 22,48
small projects and 13
SOC (system and operations concept
document) 32,45
generating Fig. 3-1 23
requirements and specifications and 22
requirements definition phase and 32
reuse proposal included 25
updates to 32, 45
software development history 68, 89, 1 14,
142
SORD (system operations requirements
document) 22,48
structure charts see Diagrams, design
system description 9, 108, 137, 146
audits and 146
contents of 1 55
Fig. 8-7 156
detailed design document and 1 1 3
exit criteria and 159
final version of 10, 141
system testing phase and 153
tools to produce diagrams for 29
user's guide 9
audits and 146
contents of 153
Fig. 8-6 154
detailed design document and 1 1 3
205
Index
Documents continued
draft of 9, 108, 113, 115, 122, 129, 134,
153
exit criteria and 159
final version of 10, 141, 168, 176, 177
system testing phase and 137, 153
Domain analysis see Analysis, domain
Editor see LSE
Entry criteria see Criteria, entry
Environments
acceptance testing 157
Ada 93
constraints of 61, 180
CPU use and 127
development team and 101
FDF 1, 52, 71, 72, 96, 122, 124, 149, 180
analysts and 137
analytical test plans in 132
SDE 124
SEL 120, 123
Fig. 1-1 1
STL 1, 124
test 115,137,139,147
transfer among 124,142,180
understanding 180
Estimates and estimation 53
code 127
cost 25, 45, 46, 52, 54, 56, 1 14, 142
documentation of 181
effort see staff, hereunder
measures and 77, 79, 96, 124
Table 6-1 97
performance 44
performance modeling and 77
requirements 30,31
reuse 51, 97, 150
schedule 46, 51, 52, 54, 56, 150
specification modifications and 79,96, 182,
183
staff 31,51,52,56,58, 150
notecard 10
system 51, 52, 53, 56, 58, 97, 150
updates to 79
TBD requirements and 52,54,61
unstable requirements and
Fig. 6-4 98
updates to 68, 69, 79, 96, 114, 127, 181,
182
Exit criteria see Criteria, exit
FCA see under Audits, configuration
FDF (Flight Dynamics Facility) 1
RSL 76
see also under Environment
Forms
COF (component origination form) 120, 126
CRF (change report form) 122, 145
developers and 128
librarian and 122
data collection 18
discrepancy report 122, 140, 147, 169, 170
acceptance test team and 163
closure of 149
development team and 163,167,168
exit criteria and 159
management team and 149
SEL model 152
system test team and 149
PCSF (project completion statistics form)
173
requirements question-and-answer 47, 48, 50,
78,92,96, 124, 143, 150
RID (review item disposition form) 45, 58
notecard 37
CDR and 89, 105
exit criteria and 39, 61, 82, 105
PDR and 68, 80
requirements definition team and 70, 91
SRRand 39
SEF (subjective evaluation form) 173
test report 121, 147
FORTRAN
FDF environment and 71
PDL 68,74
preliminary and detailed design phases and
Fig. 5-3 72
prologs 68, 74
see also SAP, under Analyzers
H
206
Index
I
Images, executable see load module, under Builds
Implementation phase see under Phase
Inspections 29, 133
design 92
Interactive System Productivity Facility see ISPF
Interfaces 8, 25, 26
Ada and 72,74
detailed design phase 92
errors 74, 117
exit criteria and 39, 105
implementation phase 108, 111
inspection team and 76
OODand 71,72
PDRand 80
preliminary design phase 8, 64, 66, 68, 70,
71,75
requirements analysis phase 49
reuse and 16, 77
smaller projects 35
TBD requirements and 52,78
user 101, 119
detailed design phase 92
ISPF (Interactive System Productivity Facility)
124
Items
review 32,37,48
see also RID, under Forms
test 165
evaluation of 171, 172
reports and 166, 167
IV&V (independent verification and validation)
149
K
Language-sensitive editor see LSE
Libraries
(for documents)
contents of 74
program library manager 95
project 50, 122
contents of 89, 95, 122
development team and 1 13
exit criteria and 134
version control 123
SEN and 122, 146
(for software) 115, 122, 142, 145, 169
CAT (Configuration Analysis Tool) 123,
124
CDRand 90
changes to 122, 140, 168, 170
compilation systems and 124
contents of 69, 129, 153
control of 142, 145
documentation and 143, 146
exit criteria and 133
measures and 127,128
PANEXEC 124
PANVALET 123, 124
system delivery and 176
tools for 122, 123, 124
usage as measure 124,126
development team and 89
librarian 50, 89, 122
COFand 121, 122
CRFand 122
executable images and 121
load module and 113
SEN and 95
management team and 69, 90
reuse and 16
RSL 76,89, 124, 141
Life cycle, software development
activities of 5
builds see Builds
estimates and estimation and 182
measures of see Measures
milestones notecard 1
phases of 5, 51
see also Phases
Recent SEL paper on notecard 3
releases see Releases
reuse and 15, 16
Fig. 2-2 15
reviews see Reviews
SDMPand 55
notecard 11
tailoring 11, 169
notecard 12, 25
see also Phase Highlights tables at beginnings
of sections
207
Index
Load module see under Builds
LSE (language-sensitive editor) 95
PDL and 74
VAX 123
M
Measures
acceptance testing phase 169, 173
Table 9- 1,173
detailed design phase 96, 124
Table 6-1 97
recording of 114
developers responsible for 18
estimates and estimation as 79
implementation phase 114,124,126
Table 7-1 125
library usage as 126, 127
life-cycle phases and 17
Fig. 2-3 18
preliminary design phase 77, 96
Table 5-1 78
project histories database 18
requirements analysis phase 50, 77
Table 4-1 51
requirements definition phase 30
Table 3-1 31
SEL 19, 126, 128
Fig. 2-3 18
notecard 3
Table 2-1 18
software development history and 169
source code as 127
system testing phase 142, 150
Table 8-1 151
see also Phase Highlights tables at beginnings
of sections
Methods 28,47
acceptance testing phase 170
development plan and 181
discipline and 183
elements of 180
environment and 180
integration testing 120
prototype assessment 58
see also Analysis
see also name of particular method; Phase
Highlights tables at beginnings of sections
Metrics see Measures
Mills, Harlan 19
Models and modeling
performance 77
SEL discrepancy status Fig. 8-5 152
SEL error 175
Modules
configuration management and 95
defined notecard 8
implementation of 114
integration of 108, 110, 111, 120
load see under Builds
management system see under VAX
SEL 120
SEN and 95, 122
stubs 120
testing of 110, 111, 120
N
OOD (object-oriented design) 8, 15, 28, 42, 44,
49,64
Ada and 72
design diagrams and 66,91
detailed design phase and 87, 9 1
implementation phase and 1 1 3
PDL and 68
preliminary design phase and 70, 71, 73, 74
prologs and 68
SEL environment and 2
PANEXEC see under Libraries (for software)
PANVALET see under Libraries (for software)
PCA see under Audits, configuration
PCSF see under Forms
PDL (program design language)
Ada 74,93,97
coding statements and 1 1 1
development team and 68, 89
documentation of 80, 86, 95, 98, 119
evaluation criteria and 77
exit criteria and 82, 105
FORTRAN 74
implementation phase and 74
management team and 69
208
Index
methods and tools 70,91
quality assurance and 117
reviews of 75, 93
SELand 74
PDR see under Reviews
Phase
Note that exit criteria of one phase are the
entry criteria of the next phase; see also Phase
Highlights tables at beginnings of sections
acceptance testing
acceptance test plan and 1 55
entry criteria 159
evaluation criteria 171, 172, 173
exit criteria 177
flow diagram Fig. 9-1 163
products 176
transition to 143
detailed design
Ada and 93
design diagrams and 71 , 86
entry criteria 82
evaluation criteria 96
exit criteria 105
flow diagram Fig. 6-1 87
formalisms produced during 8
FORTRAN and
Fig.5-3 72
key activities 86, 89
Fig. 6-2 88
measures of 96, 114
methods and tools 91,92
OODand 91
package bodies and 73
preliminary design report and 68
products 86, 101, 108
reuse analysis and 96
TBD requirements and 52, 96
transition to 69, 86
walk-throughs 92
implementation 9
configuration management and 1 1 5
CPU time and 127
detailed design document and 8
documentation and 141, 144, 153
entry criteria 105
estimates and estimation and 1 27
evaluation criteria 126
exit criteria 9, 133
flow diagram Fig. 7-1 109
key activities 110
Fig. 7-3 112
lessons learned 142
libraries and 127
measures of 1 14, 124
Table 7-1 125
methods and tools 1 16, 147
PDLand 74
products 108, 122, 129, 132
prologs and 74
TBD requirements and 115
transition to 70, 105, 108
maintenance and operations 10
notecard 10
changes deferred to 143
phase not specifically addressed in this
document 10
reuse and 17
preliminary design
Ada and 72
diagram of Ada systems Fig. 5-4 73
entry criteria 61
evaluation criteria 77
exit criteria 69, 82
flow diagram Fig. 5-1 65
key activities 66
lessons learned 89
measures of 77, 96
Table 5-1 78
methods and tools 70
products 71,80,99
Fig. 5-5 81
requirements analysis report and 54
requirements and specifications document
and 64
TBD requirements and 52,66
transition to 46
requirements analysis 42, 44, 46, 64, 184
entry criteria 39
evaluation criteria 52
exit criteria 61
flow diagram Fig. 4- 1 43
key activities 44
Fig. 4-2 46
lessons learned 68
measures of 50, 77
methods and tools of 47
products 46, 54
prototypes and prototyping and 45
209
Index
Phase continued
reuse analysis and 45
walk-throughs 42,44,45,47
requirements definition 22
evaluation criteria 31
exit criteria 39
flow diagram Fig. 3-1 23
key activities 25
measures of 30
Table 3-1 30
methods and tools 28
products 26,27,32
prototyping and 30
reuse analysis and 16
walk-throughs 30
system testing
acceptance test plan and 155
analytical test plan and 1 36
entry criteria 133
evaluation criteria 150
exit criteria 137, 159
flow diagram Fig. 8-1 136
key activities 137
measures of 142, 150
Table 8-1 151
evaluation of 150
methods and tools 144
products 153
purpose of 136
requirements and specifications document
and 146, 149
reuse and 141
system test plan and 136
TBD requirements and 150,155
user's guide and 137
Plans see under Documents
PPE (Problem Program Evaluator) 77
Preliminary design review see PDR, under
Reviews
Preliminary system requirements review see
PSSR, under Reviews
Products
acceptance testing phase 176
detailed design phase 86,98
diagrams 86
development plan and 181, 182
exit criteria and 105,134
implementation phase 129, 144
intermediate 26,99, 157, 181, 184
libraries and 16
preliminary design phase 64, 69, 71, 80
Fig. 5-5 81
prototyping plan see under Documents
quality assurance and 13, 29, 69, 90, 1 15
requirements analysis phase 54
requirements definition phase 32
reuse 15
review 27,42,46,92
soft 184
system testing phase 153
tailoring and 1 1
see also names of specific products; Phase
Highlights tables at beginnings of sections
Program library manager see under Libraries
Programmers
builds and 108
CASE and 123
LSEand 123
Prologs 68
Ada see package specifications, under Ada
development team and 89
documentation of 80, 86, 95, 98
evaluation criteria and 77
exit criteria and 82,105
FORTRAN 68,74
implementation phase and 74
LSEand 95
management team and 69
methods and tools 70, 91
reviews of 75, 93
SELand 74
Prototypes and prototyping 14, 45, 69
customer and 14
detailed design phase and 87, 91, 97
documentation of 14, 58
see also plan, under Documents
drivers 68,71,74,76, 120, 123
evaluation 58
flight dynamics environment and 14
guidelines for notecards 14
implementation phase and 120
interface 49
objective of 58
plan see under plan, under Documents
preliminary design phase and 64, 66, 76, 80
requirements analysis phase and 49
requirements definition phase and 30
SDMPand 58
210
Index
PSRR see under Reviews
Q
Quality assurance 13, 69, 74, 80, 90, 93, 102,
115, 142, 143, 165, 169
documents and 141
Regression testing see under Testing
Releases 11, 12, 126
changes deferred to 143,159
documentation of 99, 101, 108, 129
implementation of 109
life-cycle phases and
Fig. 7-2 110
Reports see under Documents
Requirements
analysis phase see under Phase
audits and 143
changes to 143, 159,182, 183
Fig. 6-4 98
BDRand 126
CDRand 102
communication of 90, 1 14
CPU time and 127
detailed design phase and 89, 96
implementation phase and 114,116
measures and 128
preliminary design phase and 79
classification of 44, 47
customer and 22, 155
definition of 22
methods and tools for 28
definition phase see under Phase
discrepancy and 149
generalization of 1 5
misinterpreted 175
review of system see SRR, under Reviews
TBD (to-be-determined) 52, 77, 99
BDRand 126
classification of 52
defined 48
detailed design phase and 96
development team and 44, 47
estimation of risk 54, 61
exit criteria and 39, 61 , 105
interfaces and 52, 78
management team and 45
measure 51, 124
PDRand 80
preliminary design phase and 78
requirements analysis and 42
requirements analysis report and 54
requirements definition 7
requirements definition team and 44, 86,
90
resolution of 52, 64, 69, 70, 86, 90, 96,
115, 155
smaller projects 12
total requirements and 31
testing and 136, 162
total 31
Requirements definition of 31
Requirements definition phase see under Phase
Reusable Software Library see RSL, under
Libraries
Reuse
acceptance test phase and 173
activities enabling 15
Fig. 2-2 15
analysis and verification 16, 66, 70, 76, 80,
91
see also candidate software, hereunder
applications specialists and notecard 27
candidate software 16, 22, 64, 66, 76, 82, 89,
96, 141
current projects and 16
design and 15, 16, 66
developers and 17
documentation and 15,32,45,66,68,76
estimates and estimation 77, 79, 96, 97, 124
key elements of notecard 15
libraries 16, 69
life cycle and 15, 16
Fig. 2-2 15
performance analyzers and 77
pitfalls notecard 25
preliminary design phase and 76
preservation techniques 17
prototypes and prototyping and 76
requirements analysis and design phases and 7
specifications and 15
verbatim or with modifications 17
Reviews
BDR (build design review) 108, 1 13, 1 15,
132
211
Index
Reviews continued
build test plan and 129
format of
Fig. 7-9 133
hardcopy materials for
Fig. 7-10 134
requirements definition team and 116
TBD requirements and 126
CDR (critical design review) 102
conduct of 8,86,89,90,113
exit criteria and 105
format
Fig. 6-6 103
hardcopy materials for 99, 104
implementation phase and 108
libraries and 90
project size and 12
prototypes and prototyping and 89
requirements definition team and 48,91
RIDs and 89, 105
TBD requirements and 126
test plan and 101, 113
criteria for 12, 93
format and contents recommended notecard 1 2
PDR (preliminary design review) 8, 64, 69
CDR and 102
detailed design phase and 86
exit criteria and 80, 82
format of
Fig. 5-6 82
hardcopy materials for
Fig. 5-7 83
preliminary design phase and 80
requirements definition team and 70
RIDs and 68
tool development and 12
product see under Product
PSRR (preliminary system requirements
review) 45
notecard 26, 37
SCR (system concept review) 7, 22, 35
Fig. 3-1 22
customer and 35
format of Fig. 3-5 35
hardcopy materials for Fig. 3-6 36
SRR (system requirements review) 7, 36, 42,
45
notecard 37
conduct of Fig. 3-7 37
exit criteria and 39
generating
Fig.3-2 23
hardcopy materials for Fig. 3-8 38
requirements and specifications document
and 32, 36
small projects and 12
SSR (software specifications review) 7, 59
conduct of 42, 44, 45, 59
Fig. 4-6 59
criteria for 12
hardcopy materials for 46
Fig. 4-7 59
scheduling 46
STRR (system test readiness review) 1 15
tailoring the life cycle and 12
RID see under Forms
Rombach, Dieter notecard 3
RSL see under Libraries
SAP see under Analyzers
SCA see under Analyzers
SCR see under Reviews
SDE see under FDF, under Environment
SDMP see under Documents
SEF see under Forms
SEL (Software Engineering Laboratory) 50, 71,
74, 117, 120
baseline developed by 19,170
checklist for code readers Fig. 1-4 118
COFand 120
CRF 122
database 120
environment 123
Fig. 1-1 1
error rate model 1 75
evaluation forms 177
experiments in 19,150
Fig. 8-5 152
history of 1
keys to success 180
lessons learned 181
measures 126, 128
models and modeling Fig. 8-57 152
system description recommended by 1 55
SOC see under Documents
212
Index
Software
configuration manager see librarian, under
Libraries
development/management plan (SDMP) see
SDMP, under Documents
specifications review see SSR, under Reviews
Software Engineering Laboratory see SEL
Software Through Pictures 29
Source Code Analyzer Program see under
Analyzers
Specifications
completed 31
reuse and IS
review of see SSR, under Reviews
SRR see under Reviews
SSR see under Reviews
Staff hours see under Estimates and estimation
STL (Systems Technology Laboratory) 1
Structure charts see Diagrams, design
Stubs see under Modules
System
concept review see SCR, under Reviews
description document see under Documents
instrumentation
requirements document see SIRD, under
Documents
operations concept document see SOC, under
Documents
requirements review see SRR, under Reviews
requirements see Requirements
test plan see plan, under Documents
test see Testing, system
System Architect 29
System concept review see SCR, under Reviews
Systems Technology Laboratory see STL
Tailoring see under Life cycle
TBD see under Requirements
Teams
acceptance test 9, 10, 1 1 1
acceptance test plan and 162
analytical test plan and 1 19, 1 32
assumption of responsibility 168
ATRR and 137, 155, 157
composition of 86, 162
demonstrations and 143,144,157
development team and 144, 162, 163,
165, 167
documentation and 129, 144, 155, 172
implementation phase and 108
key activities 91, 116, 137, 144, 162,
165
test evaluation and 171
training of 168
communication among 42, 45, 64, 90, 1 13,
114, 116, 167, 169
development 7, 8, 45, 49, 52
acceptance test plan and 1 16
acceptance test team and 141, 142, 162,
165, 167, 168
acceptance testing and 10, 162, 163
analytical test plan and 91, 116, 129,
132
application specialists on 108, 110, 137
ATRR and 141, 142
BDRand 108, 116, 132
build test plan and 101, 108, 129
build tests and 121, 127
builds and 99
CASE and 49
CDRand 102
composition of 68, 1 14
configuration management and 69,136
demonstrations and 157
delailed design phase and 86
discrepancy reports and 149
documentation and 8, 10, 46, 47, 49, 50,
108, 115, 129, 137, 141, 153,
155
error correction and 172
exit criteria and 82,105
inspection team and 75, 93
integration testing and 120
key activities 66, 86, 110, 111, 137,
141, 162, 167
librarian 50
methods and 49
PDLand 93
PDRand 8,80
preliminary design phase and 61,64,68
products 98
prototypes and prototyping and 49, 76,
97
quality assurance and 69
qucstion-and-answer forms and 48
213
Index
Teams continued
requirements analysis phase and 42,44,
47
requirements and specifications document
and 47
requirements changes and 122
SDMPand 54
SSR and 46, 59
system test plan and 108
system test team and 136, 141
testing and 9, 126
training of 68
walk-throughs and 75,86,92
functional decomposition and 91
implementation
configuration management and 13
large projects and 13
inspection 76
composition of 75, 93
design inspections and 93
maintenance 17
management 45
acceptance test team and 143
acceptance testing and 163
audits and 146, 147
builds and 89,99,108,121
communication and 181, 183
composition of 68, 69, 163
configuration management and 69,142
customer and 27
development team and 68, 142, 169
discrepancies and 150
documentation and 115,173,177
exit criteria and 105,159,177
IV&Vand 149
key activities 68, 89, 114, 137, 142, 168
libraries and 69
products 98
quality assurance and 69, 173
requirements changes and 96, 98, 1 16,
142, 182
system evaluation and 150
system test plan and 130
system test team and 142
TBD requirements and 96
testing and 120, 153
membership notecard 22
OODand 91
operations concept 6
requirements definition 7, 8, 27, 45, 48, 49,
66
baselined requirements and 8
CDRand 102
detailed design phase and 86
documentation and 42, 49, 58, 155
exit criteria and 39
key activities 66, 90, 115
PDR and 80
preliminary design phase and 64
question-and-answer forms and 48
requirements analysis phase and 42, 44,
47
requirements changes and 114
requirements definition phase and 22
requirements question-and-answer forms
and 92
SRRand 39,42,44
SSR and 58
walk-tl:roughs and 75, 86, 87, 92
system test 115, 136
analysts on 115, 137
application specialists on 1 15
composition of 115,137
development team and 136
discrepancy reports and 149
documentation and 153
exit criteria and 1 34
key activities 137
system test plan and 1 30
testing and 1 53
see also Phase Highlights tables at beginnings
of sections
Testing 74
acceptance 86, 115, 123, 127, 128
completion of 10, 162
flow diagram Fig. 9-1 163
purpose of 162
releases and 12
see also under Phase
acceptance plan see plan, under Documents
build 101, 108, 111, 113, 116, 121, 127,
129, 130, 171
development team and 9
drivers 120
integration
Fig. 7-5 121
load module 145, 146, 165, 166, 167, 168,
171, 172
214
Index
module 110, 111, 116, 120
plan see plan, under Documents
regression
build 108, 121
build test plan and 1 30
small projects and 13
system 115, 123, 126, 127, 128, 129, 130,
134
completion of 9
test plan see under Documents
see also under Phase
unit 77,95, 108, 110, 111, 114, 116, 119,
126, 128
Tools 28, 47, 49, 70, 166
libraries and 50
see also Phase Highlights tables at beginnings
of sections
TSA/PPE (Boole & Babbage) see under Analyzers
u
Ulery, B. notecard 3
Units
central processing see CPU
correction of 122
defined notecard 8
TBD requirements in 52
see also Testing
User's guide see under Documents
Valett, Jon notecard 3
VAX see name of particular product
Verification
exit criteria and 133
independent and validation see IV&V
reuse see under Reuse
unit 117
w
Walk-throughs 29
Walk-throughs see also under name of phase, under
Phase
X
Y
215
REPORT DOCUMENTATION PAGE
Form Approved
OMB No. 0704-0188
Public reporting burden for this collection of information Is estimated to average 1 hour per response, including the time for reviewing Instructions, searching existing data sources, gathering
and maintaining the data needed, and completing and reviewing the collection of Information. Send comments regarding this burden estimate or any other aspect of this collection of
information, Including suggestions for reducing this burden, to Washington Headquarters Services, Directorate for Information Operations and Reports, 1215 Jefferson Davis Highway, Suite
1204, Arlington, VA 22202-4302, and to the Office of Management and Budget, Paperwork Reduction Project (0704-0168), Washington, DC 20503,
1. AGENCY USE ONLY (Leave b ank)
2. REPORT DATE
June 1992
3. REPORT TYPE AND DATES COVERED
Technical Report
4. TITLE AND SUBTITLE
Recommended Approach to Software Development
6. AUTHORS)
Linda Landis, Sharon Waligora, Frank McGarry, Rose Pajerski, Mike Startk, Kevin
O. Johnson, Donna Cover
FUNDING NUMBERS
SEL 81-305
PERFORMING ORGANIZATION NAME(S) AND ADDRESS(ES)
NASA, Greenbe 1 1, MD 20771
Univ. of MD, College Park, MD 20742
Computer Sciences Corp.
8. PERFORMING ORGANIZATION
REPORT NUMBER
CR189300
9. SPONSORING/MONITORING AGENCY NAME(S) AND ADDRESS(ES)
NASA/ SEL, Greenbelt, MD 20771
10. SPONSORING/MONTTORING
AGENCY REPORT NUMBER
SEL 82-305
11. SUPPLEMENTARY NOTES
12a. DISTRIBUTION/ AVAILABILITY STATEMENT
Unclassified-Unlimited
Subject Category
12b. DISTRIBUTION CODE
13. ABSTRACT (Maximum 200 words)
This document presents guidelines for an organized, disciplined approach to software development that is based on studies
conducted by the Software Engineering Laboratory (SEL) since 1976. It describes methods and practices for each phase
of a software development life cycle that starts with requirements definition and ends with acceptance testing. For each
defined life cycle phase, this document presents guidelines for the development process and its management, and for the
products produced and their reviews.
This document is a major revision of SEL-8 1-205.
14. SUBJECT TERMS
Requirements Definition, Requirements Analysis, Preliminary Design, Detailed Design,
Implementation, System Testing, Acceptance Testing, Maintenance & Operation
15. NUMBER OF PAGES
App. 200
16. PRICE CODE
17. SECURITY CLASSIFICATION
OF REPORT
Unclassified
18. SECURrTY CLASSIFICATION
OF THIS PAGE
Unclassified
19. SECURITY CLASSIFICATION
OF ABSTRACT
Unclassified
20. LIMITATION OF ABSTRACT
Unlimited
NSN 7540-01-280-5500
Standard Form 298 (Rev. 2-89)
Prescribed by ANSI Std. 239-18, 298-102